如果您已经在支持对集合对象的新操作的 EL 3.0(Tomcat 8+、WildFly 8+、GlassFish 4+、Payara 4+、TomEE 7+ 等)上,您可以使用${[...]}
语法构造一个列表,并且${{...}}
构造集合的语法。
<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.
}
}
它会在 webapp 启动时透明地自动注册,并将所需的数据放入应用程序范围内。