2015-04-13 1 views
0

Теперь я следующий метод контроллера подписи:Условная проверка в Spring MVC

@ResponseBody 
    @RequestMapping(value = "/member/createCompany/addParams", method = RequestMethod.POST) 
    public ResponseEntity setCompanyParams(
      @RequestParam("companyName") String companyName, 
      @RequestParam("email") String email,    
      HttpSession session, Principal principal) throws Exception {...} 

мне нужно добавить проверку входных параметров. Теперь я собираюсь создать объект так:

class MyDto{ 
    @NotEmpty    
    String companyName; 
    @Email // should be checked only if principal == null 
    String email; 
} 

и я собираюсь написать что-то вроде этого:

@ResponseBody 
@RequestMapping(value = "/member/createCompany/addParams", method = RequestMethod.POST) 
public ResponseEntity setCompanyParams(MyDto myDto, Principal principal) { 
    if(principal == null){ 
     validateOnlyCompanyName(); 
    }else{ 
     validateAllFields(); 
    } 
    //add data to model 
    //return view with validation errors if exists. 
} 

вы можете помочь достичь мои ожидания?

+0

См @Validated, JSR Validation группа, Params параметр контроллеров –

+0

@Neil McGuigan http://stackoverflow.com/questions/29616089/formerrors-doesnt-render-on-jsp, пожалуйста, прочитайте продолжение моего вопроса – gstackoverflow

ответ

0

Это не так, как работают весенние проверки MVC. Валидатор проверит все поля и поместит свои результаты в объект BindingResult.

Но тогда, это до вас, чтобы сделать специальную обработку, когда главным является недействительной, и в этом случае выглядит как валидации поля companyName:

@ResponseBody 
@RequestMapping(value = "/member/createCompany/addParams", method = RequestMethod.POST) 
public ResponseEntity setCompanyParams(@ModelAttribute MyDto myDto, BindingResult result, 
     Principal principal) { 
    if(principal == null){ 
     if (result.hasFieldErrors("companyName")) { 
      // ... process errors on companyName Fields 
     } 
    }else{ 
     if (result.hasErrors()) { // test any error 
      // ... process any field error 
     } 
    } 
    //add data to model 
    //return view with validation errors if exists. 
} 
+0

Я думаю, что вы не поняли мой вопрос. пожалуйста, прочитайте продолжение моего вопроса http://stackoverflow.com/questions/29616089/formerrors-doesnt-render-on-jsp – gstackoverflow