2012-01-22 3 views
2

リストからデータを書き込むためにstrutsイテレータを使用しようとしています。学生は私が定義したクラスです。 s:プロパティをvalue属性と共に使用すると、まったく動作しないように見えます。最初のプロパティタグの作品でStruts2 Iteratorプロパティ値(動作しない)

<s:iterator value="students" var="student"> 
    <h2><s:property /></h2> 
    <h2><s:property value="firstName" /></h2> 
    <h2><s:property value="student.firstName" /></h2> 
    <h2><s:property value="top.firstName" /></h2> 
    <h2><s:property value="[0].firstName" /></h2> 
    <h2><s:property value="#firstName" /></h2> 
</s:iterator> 

私はJSPに次のコードを持っています。これは、StudentオブジェクトのtoString()を出力します。他のすべてのプロパティタグは何も印刷しません。

次のようにStudentクラスのtoString()メソッドがある:

String getFirstName() { 
    return firstName; 
} 

を、私はStrutsの2.1.6
を使用しています:以下のように

public String toString() { 
    return firstName + " " + lastName + " " + Integer.valueOf(age); 
} 

StudentクラスはgetFirstName()メソッドを持っています ログファイルに例外はありません。
htmlのソースを見ると、空のh2タグが表示されます。
ここで何が問題なのでしょうか。どんな助けもありがとうございます。

+2

パブリックメソッドである必要があります。 –

+1

OGNLがあなたのドメインオブジェクトのプロパティにアクセスするためには、アクセスメソッドがpublicである必要があります –

答えて

0

getFirstName()メソッドには、パッケージレベルのアクセス権しかありません。 JSPからアクセスできるように公開する必要があります。

public String getFirstName()

、あなたが設定しているに変更し、それを。

+0

ありがとう!それは私の愚かな間違いです。/ – arahant

+0

それは馬鹿ではありません。私はまだ時々それをする。それはあなたが今から探している最初のものにすぎません。 –

0

あなたは

<s:iterator value="students" var="student"> 
<h2><s:property value="#student.firstName" /></h2> 
</s:iterator> 

ようにあなたがオブジェクトから値を参照する必要がイテレータタグで「VAR」属性を使用しているとして、あなたは

<s:iterator value="students"> 
<h2><s:property value="firstName" /></h2> 
</s:iterator> 
以下のようにvar属性を使用せずに同じコードを書くことができます

どちらも同じです。

関連する問題