I’m working on a web application using Java and its frameworks(Spring 3.1.1). And I’m trying to avoid using scriptlets as much as possible, however I can’t find a way other than this to define an array:
<%
String[] alphabet = {"A", "B", "C", ... , "Z"};
pageContext.setAttribute("alphabet", alphabet);
%>
After setting pageContext attribute, I can use it with ${alphabet}. But I want to know, is it possible to use plain JSTL/EL to create an array?
UPDATE: I’m using this array to create links. For example, if user clicks ‘S’, a list of employees whose first name starts with ‘S’ comes. So, instead of creating links one by one I’m iterating ${alphabet}.
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.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.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:
It’ll transparently auto-register itself on webapp’s startup and put the desired data in application scope.