struts2中iterator标签处理hql返回的不定格式数据

查询操作处理端:

String hql= "select w.Sort_Name , sum(w.Gumack)  from WorkList w group by Sort_Name";

public List<Object[]> list(String hql) {
  return  factory.getCurrentSession().createQuery(hql).list();
 }

返回的是ArrayList类型的数据不知道其中的索引属性

Action中的代码:

public String reportSort(){
  ActionContext.getContext().put("sortGroup", workListService.list("select w.Sort_Name , sum(w.Gumack)  from WorkList w group by Sort_Name"));
  return "reportSort";
 }

在jsp中可以有这样几种方式处理:

1.通过status属性迭代

<s:iterator value="#request.sortGroup" status="sort">
      <tr>
       <td ><s:property value="#request.sortGroup[#sort.index][0]"/></td>
       <td ><s:property value="#request.sortGroup[#sort.index][1]"/></td>
      </tr>
 </s:iterator>

其中status 迭代元素的索引,#sort.index是迭代每个sort的索引值,[0]中的数字是每个sort数组的下标

更简单的可以把#request.sortGroup看成一个二维数组,来取值

 

刚在别人那里学到的一种更简洁的方式:

2.通过id属性来迭代

<s:iterator value="#request.sortGroup" id="element">

<tr>
       <td ><s:property value="#element[0]"/></td>
       <td ><s:property value="#element[1]"/></td> 
</tr>

</s:iterator>

其中id为指定集合的迭代元素,因为返回的类型是 ArrayList<String[]>的,所以用#element表示迭代的每个数组,再用下标来取数组中的值

 

3.单字段迭代(特殊)

如果迭代的元素类型只为List类型,如:List<String>,其中只有一个字段值,

也可用更简洁的方式来取值:

<s:iterator value="#request.sortGroup" >

<tr>
             <td ><s:property /></td> 
</tr>

</s:iterator>

其中sortGroup为List<?>类型的(单字段类型)

posted @ 2013-04-26 20:35  七星6609  阅读(596)  评论(0编辑  收藏  举报