gpt4 book ai didi

arrays - 使用 JSTL 或 EL 创建数组

转载 作者:行者123 更新时间:2023-12-02 11:36:30 25 4
gpt4 key购买 nike

我正在使用 Java 及其框架(Spring 3.1.1)开发一个 Web 应用程序。我试图尽可能避免使用 scriptlet,但是我找不到除此之外的其他方法来定义数组:

<%
String[] alphabet = {"A", "B", "C", ... , "Z"};
pageContext.setAttribute("alphabet", alphabet);
%>

设置 pageContext 属性后,我可以将其与 ${alphabet} 一起使用。但我想知道,是否可以使用普通的 JSTL/EL 来创建数组?

更新:我正在使用此数组来创建链接。例如,如果用户单击“S”,则会出现名字以“S”开头的员工列表。因此,我不是逐一创建链接,而是迭代 ${alphabet}

最佳答案

如果您已经使用 EL 3.0(Tomcat 8+、WildFly 8+、GlassFish 4+、Payara 4+、TomEE 7+ 等),它支持新的 operations on collection objects ,您可以使用 ${[...]} 语法构造列表,使用 ${{...}} 语法构造集合。

<c:set var="alphabet" value="${['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']}" scope="application" />

如果您尚未使用 EL 3.0,请对单个字符串使用 ${fn:split()} 函数技巧,该字符串通过通用分隔符(例如逗号)分隔各个字符。

<c:set var="alphabet" value="${fn:split('A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', ',')}" scope="application" />

不过,我确实同意您最好使用普通的 Java 代码来实现此目的。鉴于它显然是静态数据,只需创建此监听器类:

@WebListener
public class ApplicationData implements ServletContextListener {

private static final String[] ALPHABET = { "A", "B", "C", ..., "Z" };

@Override
public void contextInitialized(ServletContextEvent event) {
event.getServletContext().setAttribute("alphabet", ALPHABET);
}

@Override
public void contextDestroyed(ServletContextEvent event) {
// NOOP.
}

}

它将在 Web 应用程序启动时透明地自动注册自身,并将所需的数据放入应用程序范围内。

关于arrays - 使用 JSTL 或 EL 创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14454769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com