- PR -

struts taglibでMapのvalueを取得する方法

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/08/31
投稿数: 12
投稿日時: 2006-04-12 23:34
セッションにMapをセットし、JSPではkeyを指定してMapから値を取得したいのですが、
下記の"key.2"のようにMapのkeyに"."を含めてしまうと、nestedとして認識されているのか、
エラーになってしまいます。
<c:out value="${map['key.2']}"/>では取得できました。
strutsのtldだけで、値を取得できるように実装できないでしょうか?

- JSPコード -
コード:
<%
    {
    java.util.HashMap map = new java.util.HashMap();
    map.put("key1","val1");
    map.put("key.2","val2");
    pageContext.setAttribute("map", map, PageContext.PAGE_SCOPE);
    }

%>
<jsp:useBean id="map" scope="page" class="java.util.HashMap"/>
<bean:write name="map" property="key1"/>
<bean:write name="map" property="key.2"/>



- エラー -
org.apache.jasper.JasperException: Null property value for 'key'
ハイネマン
会議室デビュー日: 2006/03/15
投稿数: 10
投稿日時: 2006-04-13 22:24
無理やりやろうとすれば,↓の方法はどう?
Mapの中身の数が多いと没でしょうねぇ。
参考までに。

コード:
<%
    {
    java.util.HashMap map = new java.util.HashMap();
    map.put("key1","val1");
    map.put("key.2","val2");
    pageContext.setAttribute("map", map, PageContext.PAGE_SCOPE);
    }

%>
<jsp:useBean id="map" scope="page" class="java.util.HashMap"/>
<logic:iterate id="element" name="map">
	<logic:equal name="element" property="key" value="key1">
		key1 = <bean:write name="element" property="value" />
	</logic:equal>
	<logic:equal name="element" property="key" value="key.2">
		key.2 = <bean:write name="element" property="value" />
	</logic:equal>
</logic:iterate>

未記入
会議室デビュー日: 2004/08/31
投稿数: 12
投稿日時: 2006-04-16 22:36
ハイネマンさん。
回答ありがとうございます。

"key.2"の値を取るのに、MAPをループさせてしまうことになるんですね。
確かに数が多いと厳しいですね。

本質問の件以外にもいろいろ試していて、
HashMapを継承してプロパティを追加したクラスをJSPに渡してみたのですが、
追加したプロパティもmapのキーとして認識されているのか、値がとれなかったり、、、
便利な機能は制限も多くて難しいですね。。。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)