JSP表达式语言中的数组文字?

时间:2014-08-18 18:59:26

标签: java arrays spring jsp el

之前我已经能够在Thymeleaf的表达语言中使用数组文字(使用...... OGNL?......我认为......)。现在我使用的是Spring / JSP。 JSP或Spring Expression Languages是否支持Array Literals?我找不到任何参考。

更新 这基本上就是我要做的事情:

<c:set var="myUrls" value="${new String[] {
    mk:getUrl(),
    mk:getOtherUrl(),
    mk:getDifferentUrl()
}}" />

2 个答案:

答案 0 :(得分:1)

你可以通过地图<jsp:useBean>和EL 2.2的帮助,以无脚本的方式将它们一起破解。

<jsp:useBean id="map" class="java.util.LinkedHashMap" />
<c:set target="${map}" property="url" value="${mk.url}" />
<c:set target="${map}" property="otherUrl" value="${mk.otherUrl}" />
<c:set target="${map}" property="differentUrl" value="${mk.differentUrl}" />
<c:set var="array" value="${map.values().toArray()}" />

<c:forEach items="${array}" var="item">
    ${item}<br/>
</c:forEach>

如果您的环境不支持EL 2.2,只需坚持地图并通过地图访问它。

<c:forEach items="${map}" var="entry">
    ${entry.value}<br/>
</c:forEach>

注意到你的潜在问题应该更大。您不应该直接在视图中操作模型。控制器负责。您应该以这种方式更改模型,以使其完全符合视图的预期。例如。通过添加属性,或让控制器完成工作。

答案 1 :(得分:0)

你可以使用scriptlet在带有<% /* Java */ %>块的JSP1.x中使用带有<jsp:scriptlet><![CDATA[ pageContext.setAttribute("myArray", new String[] { "a", "b", "c" }); ]]></jsp:scriptlet> <!-- so then ... --> ${myArray} <!-- or ... --> <c:forEach items="${myArray}" var="str"> <p>${str}</p> </c:forEach> 块的vanilla Java,类似于:

{{1}}
相关问题