스트럿 2 : 동작 간의 매개 변수
-
16-09-2019 - |
문제
다음 질문이 있습니다. 양식을 완료하고 액션이 양식의 값을 저장할 때 매개 변수 (예 : ID)를 전달해야합니다. 결과 = "성공"으로 전달됩니다. 성공에는이 정보를 저장하기 위해 다음 양식 (Info-Form2 및 Info.form1)을 위해 다음 양식에서 나중에 사용할 ID 및 기타 매개 변수가 제공됩니다.
예를 들어:
form1 (user) ==== "성공"====> form2 (주소)
userform.html ============================================================================================================================================================================= user_id = x ... 방법 : NewAddress))
도움을 주셔서 감사합니다
미리 감사드립니다
해결책
"Forward"라는 단어를 사용했지만 주소에 대한 자세한 정보를 수집하기 위해 새 페이지 (address.html)로 이동하고 싶은 것처럼 들립니다. 이 경우 사용자 작업이 완료된 후 주소 페이지로 리디렉션해야합니다.
<action name="user" class="UserAction">
<!-- Redirect to another namespace -->
<!-- for Struts 2.2 --> <result type="redirectAction">
<!-- for Struts 2.0 <result type="redirect-action"> -->
<param name="actionName">collect-address</param>
<param name="userId">${userId}</param>
</result>
</action>
$ {userID} 구문은 사용자 ActionAction에서 getUserId를 호출하고 귀하의 질문에 표시된대로 해당 매개 변수를 전달합니다 : assedform.html? user_id = x. Collect-Address는 TressDform.html로 이동하는 성공적인 결과를 가질 수 있습니다. 여기 문서. 다른 조치 사용을 피하려면 시도 할 수 있습니다. 결과 유형 사용 = "리디렉션" 그런 식으로 물건을 전달합니다.
정말로 전달하고 싶다면 사용할 수 있습니다. 액션 체인. 이것은 Ted가 Struts2 팀에서 낙담했습니다 그러나 그것은 당신에게 효과가있을 수 있습니다.
액션 체인 대신 모든 코드를 가져와이 요청을 단일 작업으로 완료하고 사용자 및 주소를 위해 도우미 또는 서비스 클래스를 사용하여 "액션 체인"대신 코드를 분리하고 재사용하십시오.
다른 팁
당신이 무엇을하고 싶은지 명확하지 않습니다.
조치를 성공적으로 실행 한 후에는 요청이 다른 조치로 전달됩니다. 첫 번째 조치에서는 매개 변수 ID를 전달하여 두 번째 작업에서 사용하려고합니다. 동일한 요청 호출에서 두 작업이 모두 사용되므로 요청에 따라 ID 매개 변수를 저장할 수 있습니다.
request.setattribute ( "id", idvalueobject);
두 번째 조치에서는 이와 같이 ID의 값을 추출 할 수 있습니다.
request.getAttribute ( "id");
이것은 작동해야합니다 :
<!-- Package Default -->
<package name="**default**" extends="struts-default,json-default" namespace="/">
<action name="noOp" class="com.web.myapp.action.NoOpAction">
<result name="success" type="chain">
<param name="requiresValidation">true</param>
<param name="actionName">userAuthentication</param>
<param name="namespace">/user</param>
</result>
</action>
</package>
<!-- Package User -->
<package name="user" extends="struts-default,json-default" namespace="/user">
<action name="userAuthentication" class="com.web.myapp.action.AuthenticateAction">
...
</action>