2011-07-22 8 views
3

これは、JSTL/ELを使用して動的に属性の名前を作成してセッションBeanを参照しようとしている問題の非常に単純な例です。セッション属性の名前は、対応するgetter/setterを持つ "name"というプロパティを持つ "userBean"です。動的な名前を使用してセッション属性にアクセスする方法は?

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

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

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

結果は以下のとおりです。

これは
ユーザー作品:000101.name

秒1:ACOSTA販売会社

これは
ユーザーが動作しません。私のuserBeanクラスのtoString()メソッドを呼び出して、それを連結しています+ ".name"。

確かにこれには簡単な答えがあります。しかし、私は限られた知識でそれを理解することはできません。

答えて

4

コード例は混乱しており、タイトルと第1段落に記載されている質問には関係しません。だから、私はコード例を無視し、タイトルにのみ応答します:

動的な名前を使用してセッション属性にアクセスする方法はありますか?

${sessionScope}を使用すると、すべてのセッション属性のマッピングを取得できます。カッコ表記を使用して変数を属性名${sessionScope[attributeName]}として評価することができます。

だから、これは実行する必要があります。

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

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

おかげで、それが動作します。混乱の疑いでごめんなさい。 –

関連する問題