从strut2迭代器中获取多个值

时间:2012-10-27 05:52:03

标签: struts2 iterator hibernate3 multiple-value

我是struts的新手。我不确切地知道我的问题的解决方案是否正确。 我的问题是我有两个表,如下所示

relation tables

我想基于上表创建一个HTML表格,显示字段,组名,组ID,子组名称和子组ID。我试图使用list和iterator。但我无法同时获得这两个值(名称和ID)

内部课程

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;
}
JSP页面中的

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

(我只能从上面的代码中获取组名,我需要显示组名,组ID,子组名和子组ID)

2 个答案:

答案 0 :(得分:0)

如果您正在使用Hibernate,我认为最简单的选择是映射这两个类,然后使用HQL查询恢复它们。例如:

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();

然后在Action中设置子组的属性,然后在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>

我希望它有帮助=)

答案 1 :(得分:0)

获取对象,而不是数据库中的特定字段。您必须在操作中为该对象设置getter和setter,然后在JSP中,您可以获取该对象的所有属性(不要忘记对象的setter / getter)。