保存后如何重置我的保存页面?

时间:2009-09-26 08:42:10

标签: jsp struts2

我想在提交后用一些额外的只读字段修改我的jsp页面。我已经使用了迭代器和条件。我在struts2工作。保存后如何重置保存页面?

public String savePerson(){
        Session hSession = ActionManager.getHibernateSession();
        profileObj.setProfileId(pid);
        Date doBirth = DateFunctions.toDate(dob);
        profileObj.setDob(doBirth);

        try{

            pid = ProfileDAO.getInstance().addProfils(hSession, profileObj);
            addressObj.setProfileId(pid);
            AddressDAO.getInstance().addAddress(hSession, addressObj);
            setMessage("Succesfully saved.");

            if (pid > 0){
                hSession.clear();
                resetProfile(pid);
//i want to include my jsp page with hidden fields additionally.
                }

        } catch (HibernateException hExc) {
            setMessage("Unable to save.");
            return ERROR;
        } finally {
            ActionManager.closeHibernateSession();
        }
        return SUCCESS;
        }

1 个答案:

答案 0 :(得分:1)

所以有一些事情。首先回答你的问题。通常,在保存之后,如果用户在保存后单击页面上的“刷新”,则会重定向到不同的页面以防止POST被处理两次。在您的情况下,我将重定向到另一个方法,可能是show(),您从id加载配置文件,然后显示JSP页面。重定向网址类似于“show?pid = $ {profileObj.profileId}。”

您有一个名为profile的模型对象。您的操作中不需要单独的成员变量来“捕获”请求参数。您可以在JSP页面profileObj.profileId中命名您的字段,并假设您的操作中有setProfileObj(Profile profileObj),Struts2将为您创建您的Profile对象,并根据匹配的请求参数填充正确的属性。它甚至会为日期做到这一点! (您可以通过创建和注册自己的日期转换器来自定义Struts2如何转换日期。)

所以你发布这些参数,Struts会创建你的模型,并填充值。您使用DAO保存配置文件,然后像我在第一段中提到的那样重定向。

你的行动中也有一些混乱的问题。如果您打算使用DAO模式,那么您应该将所有持久性代码(Hibernate Sesssion等)封装在那里。