2016-05-06 65 views
0

我试图在我的应用程序中实现Hibernate + Spring验证,但有一个问题,在我提交错误数据后,它不会在页面上显示错误消息。这里是代码:Spring + Hibernate验证错误

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


public class StudentVO { 

private int studentID; 
private String userName; 

@NotNull 
@Size(min=2, max=45, message="Your Name should be between 2 - 45 characters.") 
private String firstName; 

private String middleName; 

@NotNull 
@Size(min=2, max=45, message="Your Surname should be between 2 - 45 characters.") 
private String lastName; 

JSP

<form:form id="myform" modelAttribute="student" method="post" class="form-horizontal" action="/register/registerStudent"> 
<div class="form-group"> 
<label for="firstname" class="col-sm-3 control-label">First Name</label> 
    <div class="col-sm-6"> 
     <form:input type="text" class="form-control float_left" id="firstname" path="firstName" placeholder="First Name" /> 
     <form:errors path="firstName"></form:errors> 
     </div> 
</div> 
    <div class="form-group"> 
    <label for="middlename" class="col-sm-3 control-label" id="md">Middle Name</label> 
     <div class="col-sm-6"> 
      <form:input type="text" class="form-control" id="middlename" path="middleName" placeholder="Middle Name" /> 
     </div> 
</div> 
<div class="form-group"> 
<label for="lastname" class="col-sm-3 control-label">Last Name</label> 
    <div class=" col-sm-6"> 
     <form:input type="text" class="form-control float_left" id="lastname" path="lastName" placeholder="Last Name" required="true" /> 
      <form:errors path="lastName"></form:errors> 
    </div> 

控制器

@RequestMapping(value = { "/register/registerStudent" }, method = { RequestMethod.GET, RequestMethod.POST }) 
public String registerSubmit(@Valid StudentVO student, BindingResult result, Model model, HttpServletRequest request, 
     @RequestParam String action, @RequestParam(value = "parentID", required = false) String parentID, 
     @RequestParam(value = "studentID", required = false) String studentID, 
     RedirectAttributes redirectAttributes) { 
    if(result.hasErrors()){ 
     model.addAttribute("student", student); 
     List<Map<String, String>> age = lookupService.getFields("age"); 
     model.addAttribute("age", age); 
     return "studentSignup"; 
    } 

感谢您的帮助!

+0

Spring和Hibernate Verison? –

+0

您是否在类路径上有Bean验证实现? –

回答

0

我发现在我registerSubmit方法的问题,我没有提到@ModelAttribute,所以对方法的代码应该是这样的:

@RequestMapping(value = { "/register/registerStudent" }, method = { RequestMethod.GET, RequestMethod.POST }) 
public String registerSubmit(@Valid @ModelAttribute StudentVO student, BindingResult result, Model model, HttpServletRequest request, 
    @RequestParam String action, @RequestParam(value = "parentID", required = false) String parentID, 
    @RequestParam(value = "studentID", required = false) String studentID, 
    RedirectAttributes redirectAttributes) { 
if(result.hasErrors()){ 
    model.addAttribute("student", student); 
    List<Map<String, String>> age = lookupService.getFields("age"); 
    model.addAttribute("age", age); 
    return "studentSignup"; 
}