Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Hibernate验证程序不工作(它允许传递空值)_Spring_Annotations_Size_Hibernate Validator_Notnull - Fatal编程技术网

Spring Hibernate验证程序不工作(它允许传递空值)

Spring Hibernate验证程序不工作(它允许传递空值),spring,annotations,size,hibernate-validator,notnull,Spring,Annotations,Size,Hibernate Validator,Notnull,我尝试使用Hibernate验证器,但@NotNull和@Size注释似乎对我不起作用。它们允许空值和超出定义大小的值。其他每一个Hibernate验证器注释也不起作用。你们有谁知道为什么吗?看起来一切都很好,但仍然不起作用 这里是我的类、视图和XML,以及一个指向整个项目的链接(如果需要) 先谢谢你 Customer.java CustomerController.java customer-form.jsp web.xml spring-mvc-demo-servlet.xml pom.xm

我尝试使用Hibernate验证器,但@NotNull和@Size注释似乎对我不起作用。它们允许空值和超出定义大小的值。其他每一个Hibernate验证器注释也不起作用。你们有谁知道为什么吗?看起来一切都很好,但仍然不起作用

这里是我的类、视图和XML,以及一个指向整个项目的链接(如果需要)

先谢谢你

Customer.java

CustomerController.java

customer-form.jsp

web.xml

spring-mvc-demo-servlet.xml

pom.xml


为了使验证能够工作,Spring框架需要存在一个验证器bean。您需要在spring-mvc-demo-servlet.xml中创建它,如下所示-

package springdemo.content;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Customer {

    private String firstName;

    @NotNull(message = "is required")
    @Size(min = 1, message = "is required")
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}
package springdemo.controllers;

import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import springdemo.content.Customer;

import javax.validation.Valid;

@Controller
@RequestMapping("/customer")
public class CustomerController {

    // add an InitBinder to convert and trim input settings
    // remove leading and trailing whitespace
    // resolve issue for our validation

    @InitBinder
    public void initBinder(WebDataBinder dataBinder) {

        StringTrimmerEditor stringTrimmerEditor = new StringTrimmerEditor(true);

        dataBinder.registerCustomEditor(String.class, stringTrimmerEditor);
    }

    @RequestMapping("/showForm")
    public String showForm(Model theModel) {

        theModel.addAttribute("customer", new Customer());
        return "customer-form";
    }

    @RequestMapping("/processForm")
    public String processForm(@Valid @ModelAttribute("customer") Customer theCustomer,
                              BindingResult theBindingResult) {

        System.out.println("Last name: |" + theCustomer.getLastName() + "|");

        if (theBindingResult.hasErrors()){
            return "customer-form";
        } else {
            return "customer-confirmation";
        }
    }
}
<%--
  Copyright: kuba, 08.01.19 : 19:22
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<html>
<head>
    <title>Customer Registration Form</title>

    <style>
        .error {color:red}
    </style>
</head>
<body>

<i>Fill out the form. Asterisk (*) means the field is required.</i>
<br><br>

<form:form action="processForm" modelAttribute="customer">

    First name: <form:input path="firstName"/>
    <br><br>

    Last name (*): <form:input path="lastName"/>
    <form:errors path="lastName" cssClass="error"/>
    <br><br>

    <input type="submit" value="Submit data"/>

</form:form>

</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">

    <display-name>spring-mvc-demo</display-name>

    <!-- Spring MVC Configs -->

    <!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc-demo-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">

    <display-name>spring-mvc-demo</display-name>

    <!-- Spring MVC Configs -->

    <!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc-demo-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>learning</groupId>
    <artifactId>springmvcdemo3</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.el</artifactId>
            <version>3.0.1-b09</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2.1</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/javax.servlet.jsp.jstl-1.2.1.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp.jstl-api</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2.1</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/javax.servlet.jsp.jstl-api-1.2.1.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/commons-logging-1.2.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.14.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator-cdi</artifactId>
            <version>6.0.14.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator-osgi</artifactId>
            <version>6.0.14.Final</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator-annotation-processor</artifactId>
            <version>6.0.14.Final</version>
        </dependency>

        <dependency>
            <groupId>javax.persistence-api</groupId>
            <artifactId>persistence-api</artifactId>
            <version>2.2</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/javax.persistence-api-2.2.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.7</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/joda-time-2.9.7.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.3</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/jsoup-1.8.3.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/log4j-1.2.17.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>paranamer</groupId>
            <artifactId>paranamer</artifactId>
            <version>2.8</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/paranamer-2.8.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>classmate</groupId>
            <artifactId>classmate</artifactId>
            <version>1.3.4</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/classmate-1.3.4.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>javax-el</groupId>
            <artifactId>javax-el</artifactId>
            <version>3.0.1-b09</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/javax.el-3.0.1-b09.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>jboss-logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.3.2.Final</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/jboss-logging-3.3.2.Final.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>validation-api</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/validation-api-2.0.1.Final.jar</systemPath>
        </dependency>

    </dependencies>

</project>