如何在JSTL中的对象列表上迭代对象?

时间:2012-01-03 10:59:14

标签: java jstl

我有一个名为Language的类,其中一个字段名为name。我有另一个名为Speech的类,它有一个language成员。我需要遍历Speech个对象的列表。在JSTL中:

<c:forEach items="${requestScope.Speech}" var="speech">
  <tr>
    <td>&nbsp;${speech.id}</td>
    <td>&nbsp;${speech.language.name}</td>
  </tr> 
</c:forEach>

我的第二个陈述${speech.language.name}不起作用。我怎样才能使它发挥作用?

语言和语言课程:

public class Speech {
    private int id;
    private Language language=null;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public Language getLanguage() {
        return language;
    }
    public void setLanguage(Language language) {
        this.language = language;
    }
}

public class Language {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    } 
}

2 个答案:

答案 0 :(得分:2)

确保您的Speech班级定义了public Language getLanguage()方法。

答案 1 :(得分:2)

JSP EL不使用字段。它使用属性。为了使此声明有效,您需要在getLanguage()中使用公共方法Speech,在getName()中使用公共方法Language

编辑:

如果吸气剂在那里,并且没有打印任何东西,则可能有四个原因:

  • 请求中没有Speech属性
  • “语音请求”属性中有一个“语音”列表,但此列表为空
  • 列表中每个语音的语言为空
  • 每种语言的名称为空或空白。

如果为语音ID打印了某些内容,则会消除前两个原因。