를 사용하여 기본적으로 감지되지JSR-303 오류는 기본적으로 내 JSR-303 주석을 잡을하지 않는 @Valid 주석을 제공하지만, 다음 방법을 사용하여 잡는 방법은 무엇 @Valid 주석
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
String[] strBaseNames = {
"resources.messages.layout.LayoutResources",
"resources.messages.layout.MenuResources",
"resources.messages.global.GlobalResources"
};
messageSource.setUseCodeAsDefaultMessage(true);
messageSource.setDefaultEncoding("UTF-8");
messageSource.setBasenames(strBaseNames);
return messageSource;
}
@Bean
public LocalValidatorFactoryBean jsr303Validator() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setValidationMessageSource(this.messageSource());
return localValidatorFactoryBean;
}
UserController.java
@Controller
@RequestMapping(value = "/security/user", method = RequestMethod.GET)
public class UserController {
@Autowired
private SecurityService securityService;
@Autowired
SessionObject sessionObject;
@Autowired
@Qualifier("jsr303Validator") Validator validator;
@RequestMapping(value = "/edit/validate", method = RequestMethod.POST)
public String validateEdit(@ModelAttribute @Valid User user,
BindingResult result,
Model model) {
String strViewName = "common/error";
validator.validate(user, result);
if(result.hasErrors()) {
strViewName = "user/userEdit";
} else {
... update work ...
strViewName = "user/success";
}
return strViewName;
}
@Valid 주석 만 사용하는 경우 result.hasErrors()는 항상 비어 있으므로 결국 ConstraintViolationException이 발생합니다 (아래 참조). 하지만 각 컨트롤러에서 jsr303validator bean을 autowire 할 필요없이 @Valid 주석 만 사용하여 JSR-303 유효성 검사를 구현하고 싶습니다.
제약 조건 위반 로그 다음은 순으로 하였다 필요했다
@NotBlank(message = "error.userid.notnull")
@Size(min = 0, max = 14, message = "error.firstname.length")
private String strUserId = "";
@NotBlank(message = "error.firstname.notnull")
@Size(min = 0, max = 50, message = "error.firstname.length")
private String strFirstName = "";
@NotBlank(message = "error.lastname.notnull")
@Size(min = 0, max = 50, message = "error.lastname.length")
private String strLastName = "";
당신
혹시이 문제를 해결 했습니까? – Stewart
예, 솔루션을 즉시 게시하십시오. –