2012-12-12 3 views
0

struts 애플리케이션에 'a'와 'b'라는 이름의 네임 스페이스가 있고 각각의 네임 스페이스에 대해 '프로세스'라는 동작을 정의했습니다.다른 네임 스페이스에 대한 struts 액션 요청 연결

이제는 네임 스페이스 'a'의 작업 '프로세스'에서 네임 스페이스 '프로세스'의 네임 스페이스 'b'로 요청을 연결해야합니다. 그러나 struts.xml에서이 작업을 수행하는 방법을 알지 못합니다. 이 요청을 다른 네임 스페이스에 연결하려면 어떻게해야합니까?

내 스트럿 구성은 다음과 같습니다 :

<package name="testa" extends="struts-default, json-default" namespace="/a"> 
    <action name="process" class="com.khoinguyen.action.ProcessAction" method="handleResponseA"> 
     <result type="chain" name="return_b"> 
      <param name="actionName">b/process</param> 
     </result> 
     <result name="success">completea.jsp</result> 
    </action> 
</package> 
<package name="testb" extends="struts-default, json-default" namespace="/b"> 
    <action name="process" class="com.khoinguyen.action.ProcessAction" method="handleResponseB">   
     <result name="success">completeb.jsp</result> 
    </action> 
</package> 

답변

1

chain 유형 결과 내부 사용 <param name="namespace">. 이 유형 결과에 대한 공식 문서는 Struts2 official documentation에 있으며 자세한 내용을 볼 수 있습니다. 귀하의 경우에는

:

<package name="testa" extends="struts-default, json-default" namespace="/a"> 
    <action name="process" class="com.khoinguyen.action.ProcessAction" method="handleResponseA"> 
     <result type="chain" name="return_b"> 
      <param name="namespace">/b</param> 
      <param name="actionName">process</param> 
     </result> 
     <result name="success">completea.jsp</result> 
    </action> 
</package> 
+0

그것은 그러나 이후 체인 조치에 해당 handleResponseB 방법, 귀하의 제안과 함께 작동, 내가 방법으로 네임 스페이스를 얻을 수없는 결과 type="redirectAction" 대신 결과를 사용하세요' 항상 '/'를 반환하지만 –

+0

대신 '/ b'를 사용합니다. @KhoiNguyen 이전에이 문제에 직면했습니다. 이것을 시도하십시오 : 네임 스페이스의 이름이'ServletActionContext.getActionMapping(). getName()'과 함께 액션 이름 안에 있는지 확인하십시오. – Pigueiras

+0

이름은 동일한 작업 이름으로 인해 항상 '프로세스'값을 반환하지만 네임 스페이스 만 다릅니다. –

관련 문제