使用JSTL或EL创建数组
我正在使用Java及其框架(spring3.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+等)上支持对集合对象的新操作,则可以使用${[...]}
语法构造列表,并且${{...}}
语法来构造一个集合。
<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代码。鉴于它显然是静态数据,只需创建此侦听器类即可:
@WebListenerpublic 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启动时透明地自动注册自身,并将所需的数据放入应用程序范围。
以上是 使用JSTL或EL创建数组 的全部内容, 来源链接: utcz.com/qa/399627.html