<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<c:set var="class1SubjectList" value="${['a','b','c']}" />
<c:set var="class2SubjectList" value="${['d','e','f']}" />
<c:set var="class3SubjectList" value="${['g','h','i']}" />
<c:set var="listOfLists" value="${[class1SubjectList,class2SubjectList,class3SubjectList]}" />
<c:forEach var="currentList" items="${listOfLists}">
<c:forEach var="currentItem" items="${currentList}">
${currentItem}
</c:forEach>
</c:forEach>
那打印abcdefgh我。要了解语法,请访问http://docs.oracle.com/javaee/7/tutorial/jsf- el004.htm。 编辑:如果在Student类中创建列表列表并在JSTL中使用它,则更好。但是,您可以使用反射来完成您想完成的任务。不好的部分是您必须使用scriptlet(实际上您可以将该代码移至自定义EL函数或标记文件中)。这是演示代码。
package test;
import java.util.*;
public class Student {
public List<String> class1SubjectList = new ArrayList<String>();
public List<String> class2SubjectList = new ArrayList<String>();
public List<String> class3SubjectList = new ArrayList<String>();
public Student(){
class1SubjectList.add("a");
class1SubjectList.add("b");
class1SubjectList.add("c");
class2SubjectList.add("d");
class2SubjectList.add("e");
class2SubjectList.add("f");
class3SubjectList.add("g");
class3SubjectList.add("h");
class3SubjectList.add("i");
}
}
和JSP
<%@ page import="test.Student, java.lang.reflect.Field, java.util.*" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%
Student student = new Student();
Field[] fields = student.getClass().getFields();
List<List<String>> listOfLists = new ArrayList<List<String>>();
for(Field field: fields){
listOfLists.add((List)field.get(student));
}
pageContext.setAttribute("listOfLists", listOfLists);
%>
<c:forEach items="${listOfLists}" var="subjectList" varStatus="theCount">
<select id="selectSubject${theCount.count}onClass">
<c:forEach var="currentItem" items="${subjectList}">
<option value="${currentItem}" >${currentItem}</option>
</c:forEach>
</select>
</c:forEach>