我想在提交后用一些额外的只读字段修改我的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;
}
答案 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等)封装在那里。