程序中遇到重点问题


  修改过程中学习到了<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>


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM