2012-04-18 24 views
0

struts2のユーザーオブジェクトに格納されているコレクションを反復処理できません。struts2のオブジェクトのコレクションを反復処理する方法は?

私のStrutsアクションは、フォームとユーザーの豆は、次のとおりです。

public class Project { 
    private String name; 
    private int id; 

    // getter and setter for name & id 
} 

public class User { 
    private String name; 
    private List<Project> projects; 
    : 
    : 
    public List<Project> getProjects() { 
     // fetch projects from database and add to projects 

     return projects; 
    } 
} 

pulbic class login extends ActionSupport { 
    private User user; 
    public String execute() { 
     user = new User(); 
     return SUCCESS; 
    } 

    public User getUser() { 
     return user; 
    } 
} 

さて、JSPページに、私は

JSPコードのユーザーのすべてのプロジェクトを表示する必要があります。

<s:iterator value="user.projects" var="proj" status="key">   
     <td> <s:property value="${proj.name}" /> </td> 
     <td> <s:property value="${proj.id}" /> </td> 
    </s:iterator> 

しかし、このイテレーターは機能しません。どうしたらいいですか?

+0

何も表示されていない場合、例外がスローされているかどうか、ページに何も表示されていないかどうかなどを正確に説明する必要があります。 – adarshr

+0

Struts2はgetUserを呼び出せません)とuser.getAlbums()メソッドをから削除します。私はこれの理由を知らない。 Struts 1.3サポートされているメソッド(getter)ネストされた要素の呼び出し。 "user.albums"のように実際にはgetUser()。getAlbums()を呼び出します。しかし、strut2はこの種のアクセスをサポートしていません。 – Saumesh

+0

@Saumeshもちろん(技術的にはOGNL)、この種のアクセスが可能です。役に立つヘルプを得るためには、より詳細な情報を提供する必要があります。 –

答えて

1

イテレータがスタックの最上部に、そのアイテムをプッシュとしてvar属性はおそらく不要です...

<s:iterator value="user.projects">   
    <td> <s:property value="name" /> </td> 
    <td> <s:property value="id" /> </td> 
</s:iterator> 

注あなたは{}で表現をラップしたい場合、彼らは} {%を接頭辞として付ける必要がありますOGNLを表す。ここで$ {}はELを表す。デフォルトで評価されていない場合は、struts2タグ内の式を%{}で囲む必要があります。通常、タグ属性が評価されたときに頻繁に行う必要はないコンテキストもありますほとんどの人々が期待するようにではありません。

+0

ありがとう...それは働いた! – Saumesh

+0

問題が解決した場合は、この質問の左側にある緑色のチェックボックスをオンにしてください。また、struts2タグを購読することを検討したいかもしれませんが、質問と回答を読むためにstruts2を初めて使った方が教育的です。 – Quaternion

関連する問題