2014-02-05 1 views
1

POST 요청이 성공하면 다음과 같이 요청이 리디렉션됩니다.리디렉션 동작을 사용하는 동안 쿼리 문자열 매개 변수로 제공하지 않고 동작 클래스에서 속성 값을 가져 오는 방법이 있습니까?

private String message; //Getter and setter. 

//Required validators. 
@Action(value = "AddUpadteCategory", 
    results = { 
     @Result(name=ActionSupport.SUCCESS, type="redirectAction", params={"namespace", "/admin_side", "actionName", "Category", "currentPage", "${currentPage}", "message", "${message}", "status", "${status}"}), 
     @Result(name = ActionSupport.INPUT, location = "Category.jsp")}, 
    interceptorRefs={ 
     @InterceptorRef(value="defaultStack", params={"params.acceptParamNames", "catId, catName, currentPage, rowCount, totalPages, status", "validation.validateAnnotatedMethodOnly", "true"}) 
    }) 
public String insertOrUpdate() 
{ 
    if(true) //Some conditional check. 
    { 
     setMessage(getText("message.key.true")); 
    } 
    else 
    { 
      setMessage(getText("message.key.false")); 
    } 

    return ActionSupport.SUCCESS; 
} 

유효성/변환 오류가없는 경우이 메시지는 쿼리 문자열 매개 변수로 제공됩니다.

때때로이 메시지는 길어서 긴 URL 문자열을 형성 할 수 있습니다.

리디렉션 동작을 사용하는 동안 쿼리 문자열 매개 변수로 전달하지 않고이 메시지를 가져 오는 방법이 있습니까?

이 메시지를 세션에 저장하는 것이 대안이 될 수 없습니다. 그것은 자동으로 적절한 범위에 메시지를 설정합니다

<action name="actionName" class="..." method="..."> 
    <interceptor-ref name="store"> 
     <param name="operationMode">AUTOMATIC</param> 
    </interceptor-ref> 
    <interceptor-ref name="defaultStack" /> 
    <result ..../> 
</action> 

다음과 같이

답변

1
사용 store interceptor

AUTOMATIC에 그 operationMode 매개 변수를 설정합니다. redirectAction 결과는 세션 범위가되지만 메시지를 표시 한 후에이 인터셉터는 자동으로이를 제거합니다.

EDIT (주석 구문) :

interceptorRefs={ 
     @InterceptorRef(value="store", params={"operationMode", "AUTOMATIC"}), 
     @InterceptorRef(value="defaultStack", params={"params.acceptParamNames", "catId, catName, currentPage, rowCount, totalPages, status", "validation.validateAnnotatedMethodOnly", "true"}) 
    }) 
+1

주석에 관해서는, 클래스 수준의 구성을 필요로 보인다. – Tiny

+0

사실, 죄송합니다. 응답을 업데이트했습니다. –

+0

추가적으로, 우리가 명시 적으로'addActionMessage()','addActionError()'메소드를 통해 추가 한 메시지만을 저장할 수 있습니까 (아니면 특정 메시지를 제거 할 수 있습니까)? (제 경우에는 항상 응용 프로그램을 통해 나타나는 오류 메시지가 있습니다. 메시지는 숨겨진 필드로 전달해야하는 보안 토큰에 대한 것이지만이 필드에 대한 setters/getters가 없다는 이유만으로 숨겨진 필드는 보안 프레임 워크 (Spring 및 Struts가 아닌)로 직접 전달됩니다. – Tiny