2012-10-27 42 views
0

我是struts的新手。我不知道我的問題解決方案是否正確。 我的問題是我有兩個表如下所示從strut2迭代器獲取多個值

relation tables

我想創建基於上述的表的HTML表,示出了字段,組名,組的ID和子的名稱小組和小組的Id。我試圖使用列表和迭代器。但我沒能獲得在JSP頁面兩個值(包括姓名和身份證)

內部類

public List getName() { 
    return namesHead; 
} 

public void setName(List name) { 
    this.namesHead = name; 
} 

public String listModules() { 
    SessionFactory factory = HibernateLoginUtil.getFactory(); 
    Session session = factory.openSession(); 
    Query q1 = session.createQuery ("select id,name FROM TableUsrModuleGroup WHERE stat='active'"); 
    for(Iterator it = q1.iterate() ; it.hasNext() ;) { 
     Object row[] = (Object[]) it.next(); 
     namesHead.add (row[1]); //put the name 
    } 
    return SUCCESS; 
} 

<table> 
    <s:iterator status="status" value="namesHead" > 
    <tr><td><s:property/></td></tr> 
    </s:iterator> 
</table> 

(僅組的名稱我可以從上面的代碼獲得,我需要顯示組名,組名和子組的名稱以及子組的名稱)

回答

0

如果您使用的是Hibernate,我認爲最簡單的選擇是映射兩個類,然後使用H QL查詢。例如:

public class Group { 
    @OneToMany (mappedBy = "group", fetch = FetchType.LAZY) 
    private Collection <SubGroup> subgroup; 
    ... // Rest of the class, getters and setters 
} 

public class SubGroup { 
    @ManyToOne (fetch = FetchType.LAZY) 
    private Group group; 
    ... // Rest of the class, getters and setters 
} 

然後,你必須讓這個HQL查詢來獲取Group類:

Query q = session.createQuery ("FROM SubGroup"); 
List<SubGroup> subgroups = (List<SubGroup>) q.list(); 

然後你在行動設定子組的屬性,然後您可以訪問他們在JSP。

<table> 
    <s:iterator value="subgroups" > 
    <tr> 
     <td> 
      <s:property value="name"/> 
     </td> 

     <td> 
      <s:property value="id"/> 
     </td> 

     <td> 
      <s:property value="group.name"/> 
     </td> 

     <td> 
      <s:property value="group.id"/> 
     </td> 
    </tr> 
    </s:iterator> 
</table> 

我希望它有助於=)

0

取對象,從數據庫中未具體領域。你必須在你的動作中擁有該對象的getter和setter,然後在JSP中你可以獲得該對象的所有屬性(不要忘記setter/getters對象)。