Hibernate验证不起作用(它允许空值传递)

问题描述 投票:0回答:1

我试图用Hibernate验证,但@NotNull和@Size注解似乎并没有为我工作。它们允许空值,和值定义的大小通之外。每隔Hibernate验证注释也不起作用。是否有人对你知道为什么吗?看似一切正常,但它仍然不工作...

这里是我的课,观点和个XML,并且如果需要这种耐心整个项目的链接。

https://www64.zippyshare.com/v/fXFogBpU/file.html

先感谢您

customer.Java

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;
    }
}

customer controller.Java

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";
        }
    }
}

客户form.jsp

<%--
  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>

veb.hml

<?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>

弹簧MVC-演示servlet.xml中

<?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>

pom.hml

<?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>
spring annotations size hibernate-validator notnull
1个回答
0
投票

为了验证工作,Spring框架需要验证的bean存在。您需要在如下spring-mvc-demo-servlet.xml创建它 -

    <bean id="validator" class="org.hibernate.validator.HibernateValidator" />
© www.soinside.com 2019 - 2024. All rights reserved.