场景:单击Submit
按钮后,我将 XML 解组为 Java,然后在 JSP 中显示 Java 对象(创建了一个 formbean 并将 JAXB java 对象映射到这个 formbean -PolicyForm
并使用这个 formbean 在 JSP 中显示)。这工作正常。
问题:我还有一个按钮 -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...*/
}
}
信任.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>