当前位置 : 主页 > 编程语言 > java >

数组 – 使用JSTL或EL创建数组

来源:互联网 收集:自由互联 发布时间:2021-06-25
我正在使用Java及其框架(Spring 3.1.1)开发Web应用程序.而且我尽量避免使用scriptlet,但是我找不到定义数组的方法: % String[] alphabet = {"A", "B", "C", ... , "Z"}; pageContext.setAttribute("alphabet", alphab
我正在使用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,它支持新的 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.
    }

}

它将透明地在webapp的启动时自动注册,并将所需的数据放在应用范围内.

网友评论