ELに${map}
としてMap
があり、それ自体が${key}
の値を持つEL変数"1000"
でもあるキーを使用して、その値を取得しようとしています。
${map["1000"]}
の使用は機能しますが、${map["$key"]}
は機能しません。何が問題なのですか、また変数としてキーを使用してMap
値を取得するにはどうすればよいですか?
$
は変数名の始まりではなく、式の始まりを示します。マップkey
のプロパティmap
にアクセスするには、${map[key]}
を使用する必要があります。
GET
パラメータを使用して、次のクエリ文字列を使用してページで試すことができます。例:?whatEver=something
<c:set var="myParam" value="whatEver"/>
whatEver: <c:out value="${param[myParam]}"/>
これは出力します:
whatEver: something
参照: https://stackoverflow.com/tags/el/info とスクロールして、「中括弧表記」セクションまでスクロールしてください。
以前にこの問題に直面したことがあります。これは通常、キーが文字列でない場合に発生します。修正は、キーを使用してマップから値を取得する前に、キーを文字列にキャストすることです。
このようなもの:
<c:set var="keyString">${someKeyThatIsNotString}</c:set>
<c:out value="${map[keyString]}"/>
それが役に立てば幸い
以下のように、Java
側のマップにKey-Valueを配置し、JSTL
ページのJSP
を使用して同じ値にアクセスできます。
前Java 1.7:
Map<String, String> map = new HashMap<String, String>();
map.put("key","value");
Java 1.7以降:
Map<String, String> map = new HashMap<>();
map.put("key","value");
JSPスニペット:
<c:out value="${map['key']}"/>