Java 在spring引导中实现自定义错误

Java 在spring引导中实现自定义错误,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我想在spring boot中实现自定义错误页。在应用程序中,id是主键,因此当未提供id时,它会将请求传输到页面,但我希望应用程序将在索引页面上显示带有错误消息的索引页面。实体类是 @Entity public class Employee { @Id //@GeneratedValue(strategy=GenerationType.AUTO) private int id; public int getId() { return id;

我想在spring boot中实现自定义错误页。在应用程序中,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列旁边有一条消息。

您可以通过javascript/jQuery执行此操作,只需编写一个小函数,它正在页面的DOM上侦听。 所以,单击submit,您可以显示错误消息、显示模式或重定向到另一个通用错误页面

如果您想让服务器进行此控制,spring提供了惊人的验证API,在google上搜索BindingResult spring

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

我发现这个例子:


希望它有帮助

我建议开发一个customError控制器,如以下示例: 并影响其上的错误html页面(您可以采用不同的方式)

@控制器
公共类CustomErrorController实现ErrorController{
私有静态最终字符串路径=“/error”;
私有静态最终org.slf4j.Logger日志=
LoggerFactory.getLogger(CustomErrorController.class);
String script\u error\u page=“集线器监视器……您的html代码……”;
@请求映射(“/error”)
@应答器
公共字符串句柄错误(HttpServletRequest){
返回脚本错误页面;
}

您可以将测试条件添加到基本控制器中,这意味着您希望重定向到错误内容的时间。

这似乎与Spring Boot无关,只是与前端表单验证有关。这是否正确?可能与
@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;
}