为什么以下代码因属性'值'而失败?在类型java.lang.String上找不到?
<c:set var="map" scope="request">
<%= new HashMap<String, String>() {{
put("key1", "value1");
put("key2", "value2");
put("key3", "value3");
put("key4", "value4");
put("key5", "value5");
put("key6", "value6");
}} %>
</c:set>
<c:forEach var="item" items="${map}">
${item.value} <br/>
</c:forEach>
然而,如果servlet设置map属性然后转发到JSP !!!
,它会成功答案 0 :(得分:0)
使用以下代码
<%=
HashMap hashMap= new HashMap<String, String>() {{
put("key1", "value1");
put("key2", "value2");
put("key3", "value3");
put("key4", "value4");
put("key5", "value5");
put("key6", "value6");
}}
request.setAttribute("map", hashMap);
%>
<c:forEach var="item" items="${map}">
${item.value} <br/>
</c:forEach>
您正在将scriptlet与jstl类型的编码混合在一起,它被认为是错误的代码实践,请参阅link1,link2。
另外,请参阅以下内容以了解jsp variable scope。
答案 1 :(得分:0)
似乎如果值在<c:set>
正文中,则字符串值将分配给变量。
Code bellow就像一个魅力!
<c:set var="map" scope="request" value="<%= new HashMap<String, String>() {{ put(\"key1\", \"value1\"); put(\"key2\", \"value2\"); put(\"key3\", \"value3\"); put(\"key4\", \"value4\"); put(\"key5\", \"value5\"); put(\"key6\", \"value6\"); }} %>" />
<c:forEach var="item" items="${map}">
${item.key} <br/>
</c:forEach>