2012-01-03 101 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打印某些內容,則會消除前兩個原因。