2013-04-10 236 views
2

我有一种情况,我需要更新名称保持不变的setAttribute的值。以下面的情况为例 -
假设我有三个JSP:abc.jsp,xyz.jsp,pqr.jsp。现在开始abc.jsp运行,然后控制转发到xyz.jsp &然后转发到pqr.jsp。在执行pqr.jspthe后,再次使用setAttribute处的更新值重新执行xyz.jsp。
abc.jsp:
如何更新session.setAttribute(name,value)值,其中名称相同?

ArrayList<Books> getSupplyStatus=new ArrayList<Books>(); 
JavaBean javaBean=new JavaBean(); 
session=request.getSession(false); 
getSupplyStatus=javaBean.getSupplyStatus(memberID); //It returns a ArrayList 
if(!getSupplyStatus.isEmpty()) 
{ 
    session.setAttribute("UpdatedBooklist", getSupplyStatus); 
    request.getRequestDispatcher("xyz.jsp").forward(request, response); 
} 

xyz.jsp:

session=request.getSession(false); 
ArrayList<Books> getSupplyStatus=(ArrayList<Books>) session.getAttribute("UpdatedBooklist"); 
// some operations & forward to pqr.jsp 

pqr.jsp:

// in this jsp new ArrayList<Books> will be prodeuced 
// & I need to bound the value of "UpdatedBooklist" with 
// which is set in abc.jsp, 
// and previous value must be override & then forward to xyz.jsp again 
// In xyz.jsp we recieve the updated value. 
+1

请澄清你的问题更多。 – 2013-04-10 05:41:40

回答

5

通过使用setAttribute(再次)将replace the value并调用必要的生命周期方法。

如果一个对象已经绑定到这个名字,它实现了HttpSessionBindingListener本次会议,其HttpSessionBindingListener.valueUnbound方法被调用。

您也可以使用removeAttribute()并再次设置具有相同名称的属性。如果通过“更新”,你的意思是你希望对象更新并且不被替换,那么获取getAttribute()的属性并调用它将会改变对象的方法。

+0

+1对于很好的解释。 – 2013-04-10 07:27:24

相关问题