2012-01-03 79 views
1

我有一个名为Language的类,有1个字段,名称为name。我有另一个类Speech,它有一个language成员。我需要遍历一个Speech对象的列表。在JSTL:如何在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; 
    } 
} 
+0

这是什么意思,“不起作用”?你能否附上一个异常跟踪?你还可以在这里发布你的课程“演讲”和“语言”吗? – 2012-01-03 11:02:21

+0

你可以发表你的'Speech'和'Language'类的代码吗? – 2012-01-03 11:02:29

+0

请提供语言课程的代码。名称字段是否有有效的getter? Speech类中的Language类的实例是否有有效的getter? – Artem 2012-01-03 11:03:30

回答

2

确保您Speech类有定义的public Language getLanguage()方法。

2

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

编辑:

如果干将都在那里,而且正在打印什么,它可以有四个原因:

  • 存在请​​求
  • 没有Speech属性有名单演讲中的演讲请求属性,但此列表为空
  • 每种语言的语言列表为空
  • 每种语言的名称为nu ll或空白。

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