로그인 작업이 성공적으로 실행되면 이전 페이지로 리디렉션됩니다 (이전 페이지를 세션에 저장하므로 나중에 가져올 수 있음). Struts2, 나는이 리디렉션 할 수있는 두 가지 방법으로 찾을 수 있습니다.이 예에서는매개 변수의 양이 알려지지 않은 다른 작업으로의 리디렉션
<action name="login" class="com.myapp.login.Login">
<result name="redirect" type="redirect">${previousAction.requestURL}</result>
</action>
을의 getPreviousAction() 대해 getRequestURL() 메소드 (이 struts2하는 ntive하지의하는 selfmade 방법)가 호출되고 의도 한대로이 예를 들어, 이전 페이지의 URL을 반환합니다
<action name="login" class="com.myapp.login.Login">
<result type="redirectAction">
<param name="actionName">${previousAction.name}</param>
<param name="namespace">/${previousAction.namespace}</param>
</result>
</action>
내가이 redirectaction 결과를 사용하려면 : 재 지정의 또 다른 유형은 또한
somenamespace/index.action
있다 왜냐하면 그것은 훨씬 더 깔끔하기 때문입니다. 하지만 쿼리 매개 변수가 URL의 일부일 때 문제가 발생합니다. 예를 들어 :
somenamespace/index.action?name=john&age=50
나는 내 struts.xml에 하드 코딩이 PARAMS을 추가 할 수 있습니다 알고 있지만, 문제는 내 로그인 행동이에이 이전에 호출 작업을 리디렉션해야하고, 나는 이전 매개 변수있는 쿼리를 사전에 알 수없는 행동했다. 이것은 리디렉션 할 작업을 정확히 알고있는 일반적인 유스 케이스와 다릅니다
내가 발견 한 매우 나쁜 해결책은 모든 param 가능 (모든 작업의 모든 params 컬렉션을 struts.xml에 추가)이었고
<param name="suppressEmptyParameters">true</param>
요청 범위에서 매개 변수를 설정하고 다음 동작에서 매개 변수를 가져 오는 더 좋은 방법 –
http://struts.apache.org/development/2.x/docs/parameters-in-configuration-results.html –