2013-04-10 142 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

相關問題