シナリオ:ボタンをクリックするとSubmit
、XML を Java にアンマーシャリングし、JSP で Java オブジェクトを表示します (フォームビーンを作成し、JAXB Java オブジェクトをこのフォームビーンにマップし、PolicyForm
このフォームビーンを使用して JSP に表示します)。これはうまくいっています。
問題:ボタンがもう 1 つありCalculate
、同じページに同じ形式のSubmit
ボタンがあります。「計算」ボタンをacordform
クリックすると、ボタンのクリック中に非整列化された値を取得する必要がありSubmit
ます。ここでは、acordform
値を取得できず、代わりに の新しいオブジェクトを取得していますacordform
。
私がグーグルで調べたとき、Struts 2には「リクエストごとにアクションオブジェクトがインスタンス化される」ため、スレッドセーフの問題はありません。
リクエストを再度送信するときに、ここでお知らせください。Action オブジェクトacordform
は毎回インスタンス化されていますか? はいの場合、どうすればこれを回避できますか? acordform
次のリクエストでもオブジェクトの値が必要なので。
アクション クラス:
public class RateAction extends ActionSupport implements
ServletRequestAware,SessionAware {
/* ... */
// ACORD xml form bean
private ACORD acordform = new ACORD();
//To display the values in the JSP
private PolicyForm policyForm;
public ACORD getAcordform() {
return acordform;
}
public void setAcordform(ACORD acordform) {
this.acordform = acordform;
}
public String doSubmit() {
/*...Unmatshalling from XML to Java -acordform is done..*/
}
public String doRateSubmimt()
{
/*..trying to get the acordform values which are being set
previously in doSubmit() method...*/
}
}
Strust.xml:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default" namespace="/" >
<action name="fileUploadAction"
class="com.main.common.action.RateAction" >
<interceptor-ref name="fileUpload">
<param name="allowedTypes">text/xml</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="params"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="basicStack"/>
<result name="success">First.jsp</result>
<result name="input">First.jsp</result>
</action>
<action name="submitAction" class="com.main.common.action.RateAction" method="doSubmit">
<result name="success">First.jsp</result>
</action>
<action name="rateAction" class="com.main.common.action.RateAction" method="doRateSubmit">
<result name="success">First.jsp</result>
</action>
</package>
JSP:
<s:form id="rtr" action="fileUploadAction" method="POST"
enctype="multipart/form-data">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<s:file name="uploadFile" label="Upload Request XML" />
<s:submit value="Submit" action="submitAction" onclick="displayDetails();" />
<s:hidden name="submitSuccess" />
<s:submit value="Calculate" action="rateAction" />
</tr>
</table>
</s:form>