Hibernate Validator не работает

Я пытаюсь проверить поле с помощью валидатора JSR303, Hibernate. Я использую для этого аннотацию @NotEmpty и пытаюсь распечатать простое сообщение об ошибке. Но это не работает.

Вот мой класс User pojo.

package com.kalam.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name="User")
public class User {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long userId;

@Column
@NotEmpty(message="username can't be blank")
private String UserName;

@Column
@NotEmpty(message="password can't be blank")
private String Password;

@Column
@NotEmpty(message="Mobile can't be blank")
private Integer MobileNo;

public Integer getMobileNo() {
    return MobileNo;
}

public void setMobileNo(Integer mobileNo) {
    MobileNo = mobileNo;
}

@Enumerated(EnumType.ORDINAL)
private Role userRole;

public Long getUserId() {
    return userId;
}

public void setUserId(Long userId) {
    this.userId = userId;
}

public String getUserName() {
    return UserName;
}

public void setUserName(String userName) {
    UserName = userName;
}

public String getPassword() {
    return Password;
}

public void setPassword(String password) {
    Password = password;
}

public Role getUserRole() {
    return userRole;
}

public void setUserRole(Role userRole) {
    this.userRole = userRole;
}

}

Пользовательская jsp-страница

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Registration</title>
<style>
    .error {
        color: red; font-weight: bold;
    }
</style>
</head>
<body>
    <div align="center">
        <form:form action="addUser" method="post" modelAttribute="userFrom">
            <table border="0">
                <tr>
                    <td colspan="2" align="center"><h2>Spring MVC Form Demo - Registration</h2></td>
                </tr>
               <tr>
                    <td>User Name:</td>
                    <td><form:input path="UserName" /></td>
                    <td><form:errors path="UserName" cssClass="error" /></td>
                </tr>

                <tr>
                    <td>Password:</td>
                    <td><form:password path="Password" /></td>
                    <td><form:errors path="Password" cssClass="error" /></td>
                </tr>
                <tr>
                    <td>Mobile No:</td>
                    <td><form:input path="MobileNo" /></td>
                    <td><form:errors path="MobileNo" cssClass="error" /></td>
                </tr>

                <tr>
                    <td colspan="2" align="center"><input type="submit" value="Register" /></td>
                </tr>
            </table>
        </form:form>
    </div>
</body>
</html>

И, наконец, класс контроллера. где я пытаюсь запустить простую операцию регистрации и проверку значения поля.

package com.kalam.controller;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.kalam.daoimpl.EmployeeDaoImpl;
import com.kalam.model.Employee;
import com.kalam.model.User;
import com.kalam.service.EmployeeService;
import com.kalam.serviceimpl.EmployeeServiceImpl;




@Controller

public class KalamController {

//@Autowired 
//EmployeeService employeeService;

    @RequestMapping("/kalam")
    public String showMessage(ModelMap map) {

        map.put("dollar", "50 US $");
        return "KalamWorld";
    }

    @RequestMapping("/insertData")
    public void InserData() {

        Employee emp= new Employee();
        emp.setEmpID(11);
        emp.setEmpName("On Target");
        emp.setEmpSalary(20000);
        emp.setAddress("Mumbai");


            ApplicationContext context=new ClassPathXmlApplicationContext("hibernate-cfg.xml"); 
            EmployeeDaoImpl dao= (EmployeeDaoImpl)context.getBean("employeeDaoImpl");
            dao.addEmployee(emp); 
            System.out.println("Data successfully inserted");

    //  employeeService.addEmployee(emp);  
    } 


    @RequestMapping(value ="/",method = RequestMethod.GET)
    public String login(ModelMap model) {
        User userForm=new User();
        model.put("userFrom", userForm);
        return "User";

    }

    @RequestMapping(value = "/addUser", method = RequestMethod.POST)
       public String addEmployee(@Valid @ModelAttribute("userFrom")User user,BindingResult result) {
         if(result.hasErrors()){
             return "User";
         }

          return "success";
       }


    @RequestMapping(value ="/welcome",method = RequestMethod.GET)
    public String welcome(ModelMap model) {
        return "User";

    }



}

Когда я нажимаю кнопку регистрации без ввода какого-либо значения, это не показывает мне никаких ошибок, вместо этого он перенаправляет на страницу успеха. Помогите, пожалуйста. Спасибо.


person Nitin    schedule 18.04.2018    source источник


Ответы (1)


почему вы не используете Spring валидатор. https://www.journaldev.com/2668/spring-validation-example-mvc-validator

Попробуй это.

person Aniket Jadhav    schedule 19.04.2018