2010-04-23 1 views
0

나는 struts.xml에 있습니다Struts2 : 동적 메서드 호출을 사용하고 다른 메서드에 대해 서로 다른 유효성 검사 규칙을 지정할 수 있습니까?

<action name="MyAction!*" class="my.Action" method="{1}"> 
     <result name="step1">step1.jsp</result> 
     <result name="step2">step2.jsp</result>   
     <result name="error">error.jsp</result> 
    </action> 

그럼 내 my.Action 클래스는 URL의 이름을 지정하여 호출 할 수있는 다양한 방법, 예를 들어 있습니다

http://localhost:8080/MyApp/MyAction!method1.action

것은 지금의하자를 필드 firstNamelastName은 한 가지 방법 (예 : 등록의 첫 번째 단계)에서 필수이며 다른 방법에서는 필수가 아니라고 말합니다.

MyAction-validation.xml과 같은 일반적인 유효성 검사 파일을 만들면 모든 방법에 필요한 필드가 만들어집니다. MyAction-method1-validation.xml과 같은 특정 유효성 검사를 수행하면 고려되지 않습니다.

해결책이 있습니까?

그렇지 않으면 각 메서드에 대해 다른 동작을 struts.xml에 매핑해야하며 동적 메서드 호출을 사용하지 않거나 수동으로 유효성 검사를 수행해야합니다.

+0

실제로 이것은 Struts2 JIRA의 공개 된 문제인 것 같습니다 : https://issues.apache.org/jira/browse/WW-1967 –

답변

0

유효성 검사에 대한 프로그래밍 방식을 사용하려는 경우이 작업을 수행 할 수 있습니다. 이는 일반적으로 validate() 방법으로 이루어 지지만 validateStep1, validateStep2 등과 같은 특정 작업 방법에 대해 validate 메서드를 만들 수 있습니다.이 메서드는 step1step2 메서드 만 유효성을 검사합니다. 다른 방법으로 다른 XML 파일을 사용할 수있는 옵션이 있는지 확실하지 않습니다.

또한 동적 메서드 호출을 사용하기 위해 작업에 와일드 카드 매핑이 필요하지 않습니다. 그냥이 사용

<action name="MyAction" class="my.Action"> 
    <result name="step1">step1.jsp</result> 
    <result name="step2">step2.jsp</result>   
    <result name="error">error.jsp</result> 
</action> 
+0

감사합니다 스티븐, 프로그래밍 방식으로 다른 검증 방법을 가질 수있는 가능성을 알고 있습니다. 다른 방법의 유효성을 검사했지만 다른 XML 파일을 사용하는 방법을 찾고있었습니다. 와일드 카드가없는 매핑에 대해서는 작동 여부는 의심의 여지가 없지만 작업 이름과 메서드 이름 사이의 구분 기호는 어떤 문자가 될까요? 이것은 일반적인 struts 구성 속성입니까? –

+0

동적 메서드 호출의 기본 문자 구분 기호는 느낌표 (!)이므로 동일한 것으로 보입니다. –