2017-07-17 91 views
0

我想使用休眠验证来验证我的表单。显示用于验证的自定义消息

这是我的实体类:

@Entity 
@Table(name = "Employee") 
@Proxy(lazy = false) 
public class Employee implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 

    @Column(name="name") 
    @NotEmpty 
    private String name; 

    @Column(name="mobileNumber") 
    @NotNull 
    private Long mobileNumber; 

    @Column(name="email") 
    @Pattern(regexp="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
    + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$") 
    @NotEmpty 
    private String email; 
} 

这是我的控制器:

@RequestMapping(value= "/employee/add", method = RequestMethod.POST) 
public String addEmployee(@ModelAttribute("employee") @Valid Employee emp, 
    BindingResult result, Model model) 
{ 
    //validator.validate(emp, result); 
    this.employeeService.addEditEmployee(emp); 
    return "redirect:/employees"; 
} 

当我提交表单具有空值,我得到一个约束冲突异常,这是为什么?

+0

请分享您的堆栈跟踪检查.. –

回答

1

@NotEmpty:检查值是否为空也不为空。因此,当您使用空值提交表单时,此验证将被检查并返回false。这就是您收到异常的原因。此验证可用于收集,字符序列,映射或数组,它们不应该为null并且大小> 0,否则这会给出异常。如果使用此验证,则只应发送非空值。

@NotEmpty(message="Value shouldnot be empty") 
private String value; 

然后在您的控制器类,不喜欢下面

@PostMapping("/addEmployee") 
public @ResponseBody ResponseEntity<AppResponse> addEmployee(@RequestBody @Valid Employee emp, Errors errors) { 
    AppResponse response = new AppResponse(); 
    try { 

     if (errors.hasErrors()) { 
      System.out.println(errors); 
      List<ObjectError> list = errors.getAllErrors(); 
      List<String> msgList = new ArrayList<String>(); 
      String msg = null; 
      for (ObjectError error : list) { 
       msgList.add(error.getDefaultMessage()); 
       msg = String.join(",", msgList); 
      } 
      response.setStatusCode(417); 
      response.setMessage(msg); 
      response.setData(new ModelMap()); 
      return new ResponseEntity<AppResponse>(response, HttpStatus.NOT_FOUND); 
     } else { 
      return "redirect:/employees"; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return AppResponseOther.genericProblem(); 
    } 
}