程序中遇到重点问题

  修改过程中学习到了<s:select>中用struts2标签显示的必须是对象型,即是使用hql查询出来的List符合。Jsp如下

<s:select style="width:140px;height:20px;" list="jcSbpcList" headerKey="" headerValue="" listKey="sbpc" listValue="sbpc" name="ztbModel.sbpc" theme="simple" ></s:select>

或者使用Sql查询出来的List进行转换:

List list = proxyService.getBasicdataService().getCxZndmList();  
  for(int i=0;i<list.size();i++){  
   Map map=new HashMap();
   Object[] objs = (Object[]) list.get(i); 
   map.put("zndm", objs[2].toString()+"-"+objs[0].toString());
   map.put("znmc", objs[2].toString()+"-"+objs[1].toString());   
   this.cxZndmList.add(map);
  }

但是这种情况如果查询出来的List就一条数据会报出错:

java.lang.String cannot be cast to [Ljava.lang.Object;

出错的原因:Sql语句执行的查询结果只有一列时就会出现该问题,当有多个列时用数组去没有问题,如果只有一列会默认为String或者其他类型!

所以最终选择页面通过iterator循环来显示sql查询出来的List,注在此没有#

<select id="sbpct" name="ztbModel.sbpc"  style="width:140px;height:20px;">
               <option></option>
               <s:iterator value="jcSbpcList" id="jcSbpcList">
               <option value="<s:property value="jcSbpcList[0]"/>"><s:property value="jcSbpcList[0]"/></option>

posted @ 2013-08-16 17:16  阿窟窿  阅读(4743)  评论(0编辑  收藏  举报