如何使用EL表达式语言$ {}访问对象

如果我有一个


ArrayList<Person> persons

如何在EL中访问它?


<c:foreach items="${what goes here??}" var="person">${person.title}</c:foreach>


胡子哥哥
浏览 664回答 3
3回答

明月笑刀无情

表达${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">&nbsp; &nbsp; ${person.title}<c:forEach>当您将其放在会话范围中时,上述内容同样有效request.getSession().setAttribute("persons", persons);甚至在应用范围内getServletContext().setAttribute("persons", persons);EL将用于title在${person.title}暗中寻找一个公共实例(不是静态的!)前缀方法get在Person类象下面这样:public String getTitle() {&nbsp; &nbsp; return title;}该字段title不一定需要存在于类中(因此您甚至可以返回一个硬编码的字符串并继续使用${person.title}),并且它不一定必须是实例字段(因此也可以是一个静态字段,只要getter方法本身不是静态的)。只有boolean(不是Boolean!)吸气剂有特殊待遇。EL将隐式地寻找以开头的公共方法is。例如${person.awesome}:public boolean isAwesome() {&nbsp; &nbsp; return awesome;}

慕森卡

<c:forEach var="item" items="${names}"> ${item.title}&nbsp; </c:forEach>names 应该在set as属性中可用于视图

红糖糍粑

如果使用Servlet或操作类创建列表,然后将其转发到JSP,则Servlet或操作类中必须包含以下行。ArrayList<Person> names = "get from somewhere";request.setAttribute("personNames",names);&nbsp;&nbsp;<c:foreach var="item" items="${personNames}"> ${item.title} </c:foreach>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript