2017-07-17 10 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:値がnullでも空でもないかどうかをチェックします。値が空のフォームを送信すると、この検証がチェックされ、falseが返されます。そのため、例外が発生しています。 、charシーケンス、マップまたは配列の場合、nullでなくsize> 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(); 
    } 
} 
関連する問題