2

シナリオ:ボタンをクリックすると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>
4

1 に答える 1