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

问题描述 投票:0回答:3

我之前已经能够在 Thymeleaf 的表达式语言中执行数组文字(使用...OGNL?...我认为...)。现在我正在使用 Spring/JSP。 JSP 或 Spring 表达式语言支持数组文字吗?我找不到任何关于它们的参考。

更新: 这基本上就是我想做的:

<c:set var="myUrls" value="${new String[] {
    mk:getUrl(),
    mk:getOtherUrl(),
    mk:getDifferentUrl()
}}" />
java arrays spring jsp el
3个回答
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>

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


0
投票

您可以使用 scriptlet 来使用普通 Java,在 JSP1.x 中使用

<% /* Java */ %>
块,在 JSP2 中使用类似以下内容:

<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>

0
投票

fn:split 对字符串执行此操作。 喜欢标签

<tag extraParams="${fn:split('_target1,book', ',')}" />
© www.soinside.com 2019 - 2024. All rights reserved.