@NotNull не проверяет и не выдает правильный результат в Spring Framework - PullRequest
0 голосов
/ 06 сентября 2018

Я создал простое приложение, которое проверяет, являются ли заданные имя и фамилия пустыми или нет. я использовал аннотацию @NotNull для проверки

Код для Student.java:

    @NotNull(message = "Name must not be null")
    private String firstName;
    @NotNull(message = "Name must not be null")
    private String lastName;

Я также создал StudentController.java

 public String processForm(@Valid @ModelAttribute("student") Student student,BindingResult bindingResult)
{
    //bindingResult is not an annotation
    if(bindingResult.hasErrors())
    {
        return "error";
    }
    else
    {
        return "success";
    }
}

Моя HTML-форма

<br/>
<form:input path="firstName"/>
<form:input path="lastName"/>
<br/>

Я не указал значение для firstName и lastName и отправил форму. Форма перенаправляет на страницу «успех», который является неправильным.

Мой файл pom.xml

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>org.sample.mvc</groupId>
<artifactId>formspringmvc</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.3.12.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.3.12.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.12.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.3.12.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.12.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
    </dependency>

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
</dependencies>

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018
<dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.9.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.17.Final</version>
        </dependency>

добавление этой зависимости в pom.xml решило эту проблему

0 голосов
/ 06 сентября 2018

При отправке формы поля String публикуются как пусто , но не пусто . Вот еще несколько ограничений, которые вы можете использовать:

@NotNull

Строка не может быть нулевой, однако может быть пустой.

@NotEmpty

Строка не может быть нулевой и не пустой (размер> 0).

@NotBlank

Строка не может быть нулевой и должна содержать хотя бы один непробельный символ.

String firstName = null;

// @NotNull: false
// @NotEmpty: false
// @NotBlank: false

String firstName = "";

// @NotNull: true
// @NotEmpty: false
// @NotBlank: false

String firstName = " ";

// @NotNull: true
// @NotEmpty: true
// @NotBlank: false

String firstName = "er-han";

// @NotNull: true
// @NotEmpty: true
// @NotBlank: true
...