表达
${foo}幕后用途JspContext#findAttribute(),其用于在属性的搜索
PageContext,
HttpServletRequest,
HttpSession并
ServletContext以该顺序可以通过
getAttribute("foo")方法,由此foo从
${foo}由此表示属性名"foo",并返回
第一个非空对象 。
因此,如果您在Servlet中执行
ArrayList<Person> persons = getItSomehow();request.setAttribute("persons", persons); // It's now available by ${persons}request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response);并通过URL调用此servlet,然后就可以
page.jsp按照以下步骤对其进行迭代:
<c:foreach items="${persons}" var="person"> ${person.title}<c:forEach>当您将其放在会话范围中时,上述内容同样有效
request.getSession().setAttribute("persons", persons);甚至在应用范围内
getServletContext().setAttribute("persons", persons);EL将用于
title在
${person.title}暗中寻找一个公共实例(不是静态的!)前缀方法get在
Person类象下面这样:
public String getTitle() { return title;}该字段
title不一定需要存在于类中(因此您甚至可以返回一个硬编码的字符串并继续使用
${person.title}),并且它不一定是实例字段(因此也可以是一个静态字段,只要getter方法本身不是静态的)。只有
boolean(不是
Boolean!)吸气剂有特殊待遇。EL将隐式地寻找以开头的公共方法
is。例如
${person.awesome}:public boolean isAwesome() { return awesome;}


