【发布时间】:2013-09-18 13:31:15
【问题描述】:
场景:单击Submit 按钮后,我将XML 解组为Java,然后显示Java 对象(创建了一个formbean 并将JAXB java 对象映射到这个formbean - PolicyForm并使用这个formbean在JSP中显示)在JSP中。这工作正常。
问题:我在同一页面上多了一个按钮 -Calculate,与 Submit 按钮的形式相同。单击“计算”按钮时,我需要获取在单击 Submit 按钮期间未编组的 acordform 值。在这里,我无法获取acordform 值,而是获取acordform 的新对象。
当我用谷歌搜索时,我看到 - Struts 2 没有线程安全问题,因为“为每个请求实例化了 Action 对象”。
当我再次发送请求时,请让我知道 Action 对象 - acordform 每次都被实例化?如果是,我该如何避免这种情况?因为即使在下一个请求中我也需要acordformobject 值。
动作类:
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>
【问题讨论】: