2012-10-27 38 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对象)。