Jsp 如何访问EL表达式语言${}中的对象
如果我有Jsp 如何访问EL表达式语言${}中的对象,jsp,jstl,el,Jsp,Jstl,El,如果我有 ArrayList<Person> persons arraylistpersons 如何在EL中访问它 <c:foreach items="${what goes here??}" var="person">${person.title}</c:foreach> ${person.title} ${item.title} 名称应该位于视图可用的set as属性中如果您使用servlet或操作类创建列表,然后将其转发到JSP,那么您的serv
ArrayList<Person> persons
arraylistpersons
如何在EL中访问它
<c:foreach items="${what goes here??}" var="person">${person.title}</c:foreach>
${person.title}
${item.title}
名称
应该位于视图可用的set as属性中如果您使用servlet或操作类创建列表,然后将其转发到JSP,那么您的servlet或操作类中必须有以下行
ArrayList<Person> names = "get from somewhere";
request.setAttribute("personNames",names);
<c:foreach var="item" items="${personNames}"> ${item.title} </c:foreach>
arraylistnames=“从某处获取”;
setAttribute(“personNames”,name);
${item.title}
表达式${foo}
使用后台,通过getAttribute(“foo”)
方法按此顺序搜索属性,其中foo
from${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);
当您将其放在会话范围中时,上述内容也同样有效
request.getSession().setAttribute("persons", persons);
甚至在适用范围内
getServletContext().setAttribute("persons", persons);
EL将在${person.title}
中为title
隐式查找一个公共实例(非静态!)方法,该方法在person
类中前缀为get
,如下所示:
public String getTitle() {
return title;
}
类中不一定存在字段title
(因此您甚至可以返回硬编码字符串并继续使用${person.title}
),而且它不一定是实例字段(因此它也可以是静态字段,只要getter方法本身不是静态的)
只有boolean
(不是boolean
!)getter有特殊的处理;EL将隐式查找前缀为is
的公共方法。例如,对于${person.awesome}
:
public boolean isAwesome() {
return awesome;
}
另见:
public String getTitle() {
return title;
}
public boolean isAwesome() {
return awesome;
}