2012-01-03 10 views
1

という1つのフィールドを持つLanguageという名前のクラスがあります。私は別のクラスSpeechlanguageのメンバーを持っています。私は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

「動作しない」とはどういう意味ですか?例外トレースを添付してください。ここであなたのクラス「スピーチ」と「言語」も投稿できますか? –

+0

'Speech'と' Language'クラスのコードを投稿できますか? –

+0

言語クラスのコードを提供してください。名前欄に有効なゲッターがありますか? SpeechクラスのLanguageクラスのインスタンスに対して有効なゲッターがありますか? – Artem

答えて

2

あなたSpeechクラスが定義されてpublic Language getLanguage()メソッドを持っていることを確認します。

2

JSP ELはフィールドを使用しません。プロパティを使用します。このステートメントが機能するには、公開メソッドgetLanguage()Speechに、公開メソッドgetName()Languageにそれぞれ設定する必要があります。

EDIT:

ゲッターがあり、そして何も印刷されていない場合、それは4つの理由持つことができます。

  • を要求
  • にはSpeech属性が存在しないのリストがあります音声要求属性の音声は空ですが、このリストは空です
  • 各音声の言語はヌルです
  • 各言語の名前はnuです11または空白。

音声IDに何かが印刷されると、最初の2つの理由が取り除かれます。

関連する問題