@ModelAttribute 을 이용하여 파라미터를 받아서 사용하다가
validation이 필요하게 됐다.
열심히 검색하고, try and error를 통해 @Validated 을 사용하도록 설정하였다.
pom.xml
<!-- Hibernate Validator --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.2.0.Final</version> </dependency>
dispatcherServlet.xml
<mvc:annotation-driven /≷
<bean id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> <!-- validator --> <property name="validator" ref="validator" /> </bean> <!-- validator --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> <bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor" />
model class
model class 에 annotation을로 validation rule을 정하자.
JSR-303 스펙을 따른다.
public class Store { @Length(max = 32) private String aa; @Length(max = 10) @NotEmpty private String bb; public String getAa() { return aa; } public void setAa(String aa) { this.aa = aa; } public String getBb() { return bb; } public void setBb(String bb) { this.bb = bb; } }
controller
public String validStore(ModelMap model, @Validated Store store) { return ICommonConstants.TO_JSON; }
적절하지 않은 값에 대해서는 BindException을 던진다.
이쁘게 결과 메세지를 다듬었다.
BindingResult bindingResult = ((BindException) th).getBindingResult(); FieldError fieldError = bindingResult.getFieldError(); String resultMessage = "[" + fieldError.getField() + "] : " + fieldError.getDefaultMessage();
자세한 건 참고한 블로그를 보자.
ref:
http://sway.tistory.com/722
http://dev.anyframejava.org/docs/anyframe/plugin/foundation/4.6.1/reference/html/ch13.html
http://linuxism.tistory.com/653
http://static.springsource.org/spring/docs/3.0.0.RC3/reference/html/ch05s07.html
'framework&tools > spring' 카테고리의 다른 글
spring + ehcache 사용 (0) | 2012.10.31 |
---|---|
Tomcat6에서 Spring 3 의 MultipartFile 처리 (0) | 2012.07.11 |
spring mvc annotation으로만 구현해보기 (0) | 2012.04.04 |