通过jsp(jsp:getProperty?)</customclass>中的List <customclass>进行迭代

时间:2012-07-05 10:27:55

标签: java jsp jstl jsp-tags

我想迭代一个List,它是User对象的成员变量。 我不想使用片段,并希望使用某种形式的jsp标签来实现这一目的。

用户类

public class User {

  private List<Option> options;

  public getOptions()...
}

我在片段中尝试做什么

<%
User user = (User)session.getAttribute("user");
List<Option> options = user.getOptions();
%>

<select id="alertFilter">

<% for (Option o : options) { %>

<option><%=o.getTitle()%></option>

<% } %>

</select>

我已经看到了一些我正在尝试做的简单例子,但他们总是得到简单的反对意见。

标记库方式 - 无法正常工作

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<jsp:useBean id="user" class="ie.openmobile.smsjobs.entity.User" scope="request"></jsp:useBean>

<c:forEach var="options" items="$user.options" >   <--incorrect references to alerts/getOptions()

<br>$options.title   <--incorrect syntax

</c:forEach>

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:7)

将其更改为如下

<select id="alertFilter">

<c:forEach var="option" items="${user.options}" >
  <option><c:out value="${option.title}"/></option>
</c:forEach>

</select>

解释:$ {user.options}将使用其getOptions()方法从会话和选项集合中获取用户,并将在每个条目上进行迭代

虽然在迭代${option.title}下会给option(这是遍历下的当前选项实例)和option.getTile()