2014-09-12 3 views
0

내 명령이봄 양식 유효성 검사

public class MyForm { 
    @Max(99) 
    private int mode; 
    private MyObj myObj; 

처럼 보이는 말과 나의하여 MyObj는

public class MyObj { 
    private String myStr; 
    private int myInt; 

하고 내 컨트롤러이

@Controller 
public class MyController { 
    @RequestMapping(value = "/Anything.htm") 
    public String AnythingMethod(@Valid MyForm myForm, ..... 

처럼 보이는 내 JSP 모습 이

<form:input path="mode"/> 
<form:input path="myObj.myStr"/> 

myStr 및 myInt에 대해 @NotNull @MAx @Min과 같은 유효성 검사를 삽입하려면 어떻게해야합니까? messages.properties에서 어떻게 오류 메시지를 지정할 수 있습니까? 도와주세요.

+0

왜 MyForm.mode와 마찬가지로이 멤버 변수에 이러한 주석을 추가 할 수 없습니까? –

+0

@isim, MyObj의 유효성 검사 주입에도 작동하지 않았습니다. 컨트롤러에서'@Valid MyForm'을 사용하면 MyObj.myInt가 아닌 MyForm.mode 만 유효성을 검사합니다. 컨트롤러에서'@Valid MyObj'를 사용하면 MyForm.mode가 아닌 MyObj.myInt 만 유효성을 검사합니다. – senderj

답변

1

질문에 게시 된 코드가 확실하지 않은 경우 확실하지 않은 몇 가지 특수 효과가있을 수 있습니다. 또한 귀하의 의견에서 다른 분야의 검증에 대한 언급을 언급 했으므로 귀하는 모두 dependencies sorted out을 보유하고 있다고 가정 할 것입니다.

그래서이 시도 :

당신의 MyForm 클래스에서 :

public class MyForm { 
    @Max(99, message="{myform.mode.max}") 
    private int mode; 

    @Valid // add @valid annotation 
    private MyObj myObj; 

당신의 MyObj 클래스에서 :

public class MyObj { 
    @NotBlank(message="{myobj.mystr.notnull}") 
    private String myStr; 

    @Max(/* some value */, message="{myobj.mystr.max}") 
    @Min(/* some value */, message="{myobj.mystr.min}") 
    private int myInt; 

당신의 MyController 클래스에서 :

@Controller 
public class MyController { 
    @RequestMapping(value = "/Anything.htm") /* add @ModelAttribute annotation */  
    public String AnythingMethod(@Valid @ModelAttribute('myForm') MyForm myForm, .....) 

.properties 파일의 오류 메시지를 지정하려면 ValidationMessages.properties 파일에 모두 넣고이 파일을 클래스 경로의 루트에 추가하십시오. (예 : /WEB-INF/classes, resources 폴더 등).

희망이 도움이됩니다.

+0

도와 주셔서 감사합니다. 문제가 해결되었습니다. myObj에서 @Valid를 어떻게 사용하는지 모르겠습니다. 그러나 나는 message = parm work를 만들 수 없다. 나는 'myobj.mystr.max = myInt invalid'를 spring의 messages.properties에 추가했다. (여기서 다른 msg는 작동하고있다.) 필자는 동일한 msg 문자열을 사용하여 WEB-INFO \에 ValidationMessges.properties를 추가하여 최대 절전 유효성 검사기의 설정을 추적했습니다. 그러나 둘 다 my {myobj.mystr.max}를 메시지로 사용합니다. 제가 놓친 것이 있습니까? – senderj

+1

@senderj 모든 유효성 검사 오류 메시지는'ValidationMessages.properties'로 들어가야합니다. 'messages.properties' 파일을 저장할 때마다이 파일을 추가 할 수 있습니다. 또한 'WEB-INFO'가 아니라 'WEB-INF'라는 것을 명심하십시오. –

+0

죄송합니다. WEB-INFO는 오타였습니다. NetBeans 프로젝트 탐색기는 WEB-INF 만 노출하므로 ValidationMessages.properties가 WEB-INF/classes가 아닌 WEB-INF에 추가되었습니다. 난 개미 스크립트를 사용하여 복사해야합니다. 파일의 이름과 위치를 지정하는 모든 xml 구성 메소드가 있습니까 ?? – senderj