If you’re already on EL 3.0 (Tomcat 8+, WildFly 8+, GlassFish 4+, Payara 4+, TomEE 7+, etc), which supports new operations on collection objects, you can use ${[...]}
syntax to construct a list, and ${{...}}
syntax to construct a set.
<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" />
If you’re not on EL 3.0 yet, use the ${fn:split()}
function trick on a single string which separates the individual characters by a common separator, such as comma.
<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" />
I do however agree that you’re better off using normal Java code for this. Given that it’s apparently static data, just create this listener class:
@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.
}
}
It’ll transparently auto-register itself on webapp’s startup and put the desired data in application scope.