在spring boot中实现自定义错误

Posted

技术标签:

【中文标题】在spring boot中实现自定义错误【英文标题】:Implement the custom error in spring boot 【发布时间】:2019-04-07 02:58:26 【问题描述】:

我想页面。在应用程序中,id 是主键,所以当没有给出 id 时,它会将请求传输到页面,但我希望应用程序在索引页面上显示带有错误消息的索引页面。实体类是

@Entity
public class Employee  
    @Id
    //@GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    public int getId() 
        return id;
    
    public void setId(int id) 
        this.id = id;
    
    public String getName() 
        return name;
    
    //@Id
    public void setName(String name) 
        this.name = name;
    
    public String getPhone() 
        return phone;
    
    public void setPhone(String phone) 
        this.phone = phone;
    


    private String name;
    private String phone;

索引页是

<!DOCTYPE html>
<html lang="en">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>index page</title>
</head>
<body>
<form action="#" th:action="@/result" th:object="$employee" method="post">
    <p>Id: <input type="text" th:field="*id" /></p>
    <p>name: <input type="text" th:field="*name" /></p>
    <p>phone: <input type="text" th:field="*phone" /></p>
    <p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>


</body>
</html>

我想在索引页面上显示错误,例如 id 字段更改颜色或在 id 列旁边有一条消息。

【问题讨论】:

似乎这与 Spring Boot 无关,而仅与前端表单验证有关。对吗? Spring Boot and custom 404 error page的可能重复 【参考方案1】:

我建议像这个例子一样开发一个 customError 控制器: 并影响你的错误html页面(你可以用不同的方式)

@Controller
public class CustomErrorController implements  ErrorController

private static final String PATH = "/error";
private static final org.slf4j.Logger log = 
LoggerFactory.getLogger(CustomErrorController.class);
 String script_error_page = "<html lang='en' app='HubMonitor'><head><meta 
   charset='UTF-8'><meta name='viewport' content='width=device-width, initial- 
  scale=1'><title>Hub Monitor</title><head>......your html code ....</head></html>";

@RequestMapping("/error")
@ResponseBody
public String handleError(HttpServletRequest request) 

    return script_error_page;

你可以在你的基本控制器中添加测试条件,这意味着当你想要被重定向到错误内容时。

【讨论】:

【参考方案2】:

您可以通过 javascript/jQuery 来完成此操作,只需编写一个小函数来监听页面的 DOM。 因此,单击提交时,您可以显示错误消息、显示模式或重定向到另一个通用错误页面。

如果你想让服务器做这个控制,spring 提供了很棒的 api 用于验证,在 google 上搜索 BindingResult Spring。

它背后的想法很简单。您的控制器将从表单中获取一个对象,您可以通过在其上使用一些注释来验证它。

我找到了这个例子:https://www.journaldev.com/2668/spring-validation-example-mvc-validator

希望对你有帮助

【讨论】:

以上是关于在spring boot中实现自定义错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Security 2.06 中实现自定义 AuthenticationProvider

在 Symfony 4.4 中实现自定义错误控制器

Spring Boot Security 自定义登录页面未加载

如何在Canvas中实现自定义路径动画

如何在Canvas中实现自定义路径动画

为啥不推荐使用 JScript 在 WiX 中实现自定义操作?