2

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

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

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>

しかし、この反復子は機能していません。どうすればいいですか?

4

1 に答える 1

3

イテレータがそのアイテムをスタックの一番上にプッシュするため、var 属性はおそらく不要です...

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

式を {} でラップする場合は、OGNL を示すために %{} をプレフィックスとして付ける必要があります。${} は EL を示します。struts2 タグ内の式を %{} でラップする必要があるのは、式がデフォルトで評価されない場合のみです。一般に、あるコンテキストで評価し、他のコンテキストでは評価しない方が理にかなっているからです。タグ属性が評価/または評価するので、これを頻繁に行う必要はありません。ほとんどの人が期待するほどではありません。

于 2012-04-18T23:43:28.627 に答える