2012-08-29 2 views
1

Spring MVC 3을 사용하고 있으며 모델 객체에 유효성 검사 주석을 사용하려고합니다.Spring MVC 3의 모델 객체 유효성 확인

그러나 예외가 발생하지 않는 경우에만이 유효성 검사가 작동하는 것으로 나타났습니다.

예를 들어이 POJO를 가지고 :

public class Person{ 
    private String name; 
    @Min(30) 
    private int age; 
} 

을 이제 시대의 타입이 INT 인 경우 I는 HTML 양식을 통해 검증 작업을 새로운 사람 인스턴스를 생성합니다.

하지만 그렇지 않은 경우 (예 : 사용자가 입력 한 문자열) 예외가 발생합니다.

그리고이 예외를 어디에 잡아야하고 오류 양식 필드에 메시지를 넣을 지 알고 싶습니까?


UPDATE : 자원 메시지 속성에 추가

서블릿-context.xml에

<mvc:annotation-driven /> 
<mvc:view-controller path="/" view-name="home" /> 
<context:component-scan base-package="com.king.controller" /> 
<mvc:resources mapping="/res/**" location="/res/" /> 
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 
+0

'servlet.xml'설정을 표시 할 수 있습니까? – Xaerxess

+0

@Xaerxess : 설정을 업데이트합니다. – hguser

답변

1

봅니다 typeMismatch 키 속성을 파일. 어떤 TypeMismatch 예외 오류에 대한 일반적인 방법으로

:

typeMismatch=This is a not valid type 

또는 콘크리트 재산,보다 구체적으로이 예외를 던져 봄 방지 할 수 및 해당 메시지가 추가됩니다

typeMismatch.person.age=This is a not valid a type 

귀하의 오류.

희망이 도움이됩니다.

업데이트 : 당신은 당신의 서블릿-context.xml에이 콩을 추가해야

:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
     p:basename="/WEB-INF/messages/validation" /> 

그리고 /WEB-INF에 파일을validation.properties를 추가/위에 언급 된 값을 가진 폴더의 메시지 (typeMismatch...).

+0

안녕하세요, jelies, 작동합니다. 그러나 typemismatch가 유효성 검사를 방해하지 않는다는 것을 알았습니다. 모델에 유효성 검사기가 있으면 형식이 일치하지 않아도 유효성 검사가 작동합니다. 양식에서 유효성 검증 메시지와 유형 불일치 메시지가 동시에 표시됩니다. – hguser

+0

그러나 형식이 일치하지 않는 경우 일부 속성의 유효성을 검사하는 방법은 무엇입니까? 나는 이것을 사용할 때이 동작을 기억하지 못했습니다 ... – jelies

+0

http://stackoverflow.com/questions/12244639/spring-mvc-nested-model-validation.png project.manager.id. 문자열이 서버에 제출되면, 내가 말한 것은 일어날 것이다. – hguser