2011-07-22 56 views
3

這是一個非常簡單的例子,我試圖通過使用JSTL/EL動態構造屬性的名稱來引用會話bean。會話屬性的名稱是「userBean」,它具有屬性「name」和相應的getter/setter。如何使用動態名稱訪問會話屬性?

This works<br> 
User: ${userBean.name}<br> 

<c:set var="userBeanName">${userBean}.name</c:set><br> 

This does not work<br> 
User: ${userBeanName}<br> 

結果是:

這工作
用戶:ACOSTA銷售公司

這不起作用
用戶:000101.name

第二個正在調用我的userBean類的toString()方法並連接它+「.name」。

當然有一個非常簡單的答案,然而,我無法用我有限的知識弄清楚。

回答

4

該代碼示例令人困惑,並且與標題和第1段中所述的問題無關。所以,我會忽略代碼示例,只回答標題:

如何使用動態名稱訪問會話屬性?

您可以使用${sessionScope}來獲取所有會話屬性的映射。您可以使用大括號來評估變量作爲屬性名稱${sessionScope[attributeName]}

所以,這應該這樣做:

<c:set var="attributeName" value="userBean" /> 

User name: ${sessionScope[attributeName].name} 
+0

謝謝,這工作。對於令人困惑的問題抱歉。 –