如何从Struts2中的两个jsp页面前进和后退动作中获取值?

时间:2011-11-21 10:56:26

标签: struts2

您好我有两个JSP页面并且是引用相同的Struts Action类。当向前移动时,第二个JSP中可以使用第一个jsp页面中的值。但是当我单击后退按钮时,值为空。可以请你建议我有任何方法可以使用这些值前后行动。 在此先感谢。

第一个JSP:

<s:textarea name="incidentBean.description" id="descriptionId" 
    rows="2" cols="34" cssClass="textarea200" >
</s:textarea> 

在我的第二个JSP中:

<s:textarea name="descriptionId" id="descriptionId" readonly="true" 
    value="%{incidentBean.description}" 
    rows="2" cols="34" cssClass="textarea200" cssStyle="background-color: #C0C0C0">
</s:textarea> 

这是我的Action类

 public class BCMCaptureInitialIncidentAction extends DefaultActionSupport {
    private BCMInitialIncidentBean incidentBean;
    private String descriptionId;
    public BCMInitialIncidentBean getIncidentBean() {
        return incidentBean;
    }

    public void setIncidentBean(BCMInitialIncidentBean incidentBean) {
        this.incidentBean = incidentBean;
    }

    public String getDescriptionId() {
        return descriptionId;
    }

    public void setDescriptionId(String descriptionId) {
        this.descriptionId = descriptionId;
    }

    /**
     * This method is used for preparing the data to pre-populate the Capture Initial Incident Screen
     * @return String
     * @param
     * @exception BcmException
     * @exception BCMDatabaseException
     */
    public String prepareInitIncident(){
        System.out.println("prepareInitIncident Entered");
        if(incidentBean!=null)
            System.out.println("prepareInitIncident description:"+incidentBean.getDescription());
        return SUCCESS;
    }

    public String validateCaptureIncident(){
        if(incidentBean!=null)
            System.out.println("validateCaptureIncident description:"+incidentBean.getDescription());
        return SUCCESS;
    }

}

1 个答案:

答案 0 :(得分:0)

你的意思是当你点击一些提交按钮然后它回到第一个jsp值不存在?

which values are you talking about?

第一个jsp值还是第二个jsp值?事情是在请求完成struts倾向于清除值栈,这是struts2请求处理周期的主要存储,对于新请求,它创建一个新的请求对象并将其放在值栈中。 如果您详细说明您的用例,则只能回答更多细节。

修改

根据评论 如果单击“提交”按钮,这些值和请求处理周期开始,struts2会将这些值放在值堆栈中,以便它们可用于该特定请求处理周期。 单击第二个jsp中的提交按钮意味着框架将创建一个新的请求对象,并将其放置在值堆栈中。 所以如果我们想让它们回到第一个jsp中,我们必须保持这些值。

**Edit2**

根据上一条评论,如果用户点击后退按钮,您必须将值移回第一个操作,所以这里有以下选项。 因为在第二个操作中,您显示了用户在文本区域中输入的值,因此当用户想要返回时,此值将被设置为descriptionId属性。所以现在你可以做以下事情

<s:textarea name="incidentBean.description" id="descriptionId" 
    rows="2" cols="34" cssClass="textarea200" value="%{descriptionId}" >
</s:textarea>

第一次显示jsp时,请注意value="%{descriptionId}"