Java Spring引导应用程序窗体未在给定的验证上进行验证

Java Spring引导应用程序窗体未在给定的验证上进行验证,java,spring,validation,spring-mvc,bean-validation,Java,Spring,Validation,Spring Mvc,Bean Validation,对于上面的模型类,我的jsp页面没有显示任何默认错误消息或提供给它的错误消息。 表格不知怎么被提交了。 我在post路径中添加了@valid注释 此外,我还添加了这个依赖项 @Entity public class People { @NotNull @Size(min = 2, max = 20) private String name; @NotNull(message = "Please enter Phone Number")

对于上面的模型类,我的jsp页面没有显示任何默认错误消息或提供给它的错误消息。 表格不知怎么被提交了。 我在post路径中添加了
@valid
注释

此外,我还添加了这个依赖项

@Entity
public class People {
    @NotNull
    @Size(min = 2, max = 20)
    private String name;

    @NotNull(message = "Please enter Phone Number")
    private long phoneNumber;

//getters and setters
}
表单Jsp

@Valid
    @PostMapping("/emergency-complaint")
    public String emergencyComplaintIndexPost(@Valid People people, BindingResult result) {
        if (result.hasErrors()) {
            return "emergency-complaint/index";
        }
        return "home";
    }

CRS |加尔各答
立即提出紧急投诉!!
紧急投诉
名称
电话号码
乡间小屋
POM.xml

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>CRS | Kolkata</title>
    </head>
    <body>
        <form:errors path="people.*" cssStyle="color: #ff0000;" />
        <div>
            <h1>Lodge an Emergency Complaint Now!!</h1>
            <form:form
                action="/emergency-complaint"
                method="post"
                modelAttribute="people"
            >
                <form:label path="emergencyComplaint.complaint" for="complaint">
                    Emergency Complaint
                </form:label>
                <form:input
                    type="text"
                    name="complaint"
                    id="complaint"
                    path="emergencyComplaint.complaint"
                />

                <form:label path="name" for="name">Name</form:label>
                <form:input path="name" type="text" name="name" id="name" />

                <form:label path="phoneNumber" for="phoneNumber"
                    >Phone Number</form:label
                >
                <form:input
                    path="phoneNumber"
                    type="Number"
                    name="phoneNumber"
                    id="phoneNumber"
                />

                <button type="submit">Lodge</button>
            </form:form>
        </div>
    </body>
</html>

4.0.0
org.springframework.boot
spring启动程序父级
2.3.1.1发布
com.naha
犯罪报告系统
0.0.1-快照
演示
SpringBoot的演示项目
1.8
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
SpringBootStarterWeb
org.apache.tomcat.embed
汤姆卡特·贾斯珀
假如
org.springframework.boot
弹簧靴开发工具
运行时
真的
org.springframework.boot
弹簧起动试验
测试
org.junit.vintage
朱尼特老式发动机
mysql
mysql连接器java
运行时
org.springframework.boot
弹簧启动安全
编译
javax.servlet
jstl
1.2
org.webjars
独自创立
4.5.0
javax.validation
验证api
1.1.0.1最终版本
org.springframework.boot
springbootmaven插件

验证api是
Bean验证
规范api,它不是一个实现。您需要在类路径中有一个实现(例如,Hibernate验证器)

见答案


此外,这里还需要在处理程序方法中添加
@Valid

它起作用了,但我必须添加
@Valid
。好像我删除了,它抛出了一个错误。另外,出于某种奇怪的原因,
@NotNull
不工作。您有两个
@Valid
s。您只需要在命令对象上的handler方法参数内使用一个。您正在使用
@NotNull
作为基本字段
long
。但是
long
不能为空。更改为
Long
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>CRS | Kolkata</title>
    </head>
    <body>
        <form:errors path="people.*" cssStyle="color: #ff0000;" />
        <div>
            <h1>Lodge an Emergency Complaint Now!!</h1>
            <form:form
                action="/emergency-complaint"
                method="post"
                modelAttribute="people"
            >
                <form:label path="emergencyComplaint.complaint" for="complaint">
                    Emergency Complaint
                </form:label>
                <form:input
                    type="text"
                    name="complaint"
                    id="complaint"
                    path="emergencyComplaint.complaint"
                />

                <form:label path="name" for="name">Name</form:label>
                <form:input path="name" type="text" name="name" id="name" />

                <form:label path="phoneNumber" for="phoneNumber"
                    >Phone Number</form:label
                >
                <form:input
                    path="phoneNumber"
                    type="Number"
                    name="phoneNumber"
                    id="phoneNumber"
                />

                <button type="submit">Lodge</button>
            </form:form>
        </div>
    </body>
</html>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.1.RELEASE</version>
    <relativePath/>
  </parent>
  <groupId>com.naha</groupId>
  <artifactId>crime-reporting-system</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>demo</name>
  <description>Demo project for Spring Boot</description>
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <!-- <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
      <scope>runtime</scope>
    </dependency> -->
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.webjars/bootstrap -->
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>4.5.0</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>