java代码如下,public <T> List<T> call(int factory, String startdate, String lastdate) {
@SuppressWarnings("rawtypes")
ArrayList list=new ArrayList();
try {
//获得链接、加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.0.210:1522:TEST", "apps",
"appstest");
CallableStatement cs = ct
.prepareCall("{call CUX_YI_TEST_JAVA_CURSOR.main(?,?,?,?)}");
cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cs.setInt(2, factory);
cs.setString(3, startdate);
cs.setString(4, lastdate);
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(1);
//factoryps=list;
while (rs.next()){
for(int i=1;i<27;i++){
list.add(rs.getString(i));
}
}
factoryps=list;
System.out.println("aaaaa"+factoryps);
System.out.println("88888="+factoryps);
System.out.println("执行成功!");
cs.close();
ct.close();

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();

} finally {

}
return (List<T>) factoryps;
}
jsp代码如下::<c:forEach var="Produce" items="${factoryps }">
<tr align="center"  height="24px">

<td width="88">${factoryps.get(0)}</td>
     <td width="122">${factoryps.get(1)}</td>
     <td width="73">${factoryps.get(2)}</td>
     <td width="70">${factoryps.get(3)}</td>
     <td width="44">${factoryps.get(4)}</td>
     <td width="100">${factoryps.get(5)}</td>
    <td width="77">${factoryps.get(6)}</td>
     <td width="115">${factoryps.get(7)}</td>
     <td width="66">${factoryps.get(8)}</td>
     <td width="126">${factoryps.get(9)}</td>因为调用的是存储过程所以,没有hibernate映射,所以取不到list的字段,只能index取,java代码在控制台输出的时候没有问题的,但是往 界面输出的时候只能输出第一列的结果,如何输出全部结果呢!!!求助!!

解决方案 »

  1.   

    在JSP页面这样写看看<c:forEach var="Produce" items="${factoryps }">
    <tr>
    <td>
    <c:out value="${Produce}"></c:out>
    </td>
    </tr>
    </c:forEach>
      

  2.   


    感觉你少个javaBean吧?或者POJO 或者的domain。。从数据库取出来的时候给封装到一个实体在封装到集合里 
    也方便前台输出
      

  3.   

    就是因为调用的存储过程所以没有hibernate映射文件的!直接得到的是list
      

  4.   

    在JSP页面这样写看看
    JScript code<c:forEach var="Produce" items="${factoryps }">
    <tr>
    <td>
    ${Produce}
    </td>
    </tr>
    </c:forEach>jstl1.1以后,直接这样写吧
      

  5.   


    这样子的意思是直接输出list中的所有内容!,那样的话就是所有的内容都会排成一列!我需要给每个量做一个字段表头!
      

  6.   

    JScript code<c:forEach var="Produce" items="${factoryps }">
    <tr>
    <td>
    ${Produce}-------------------------这里${Produce.参数名}这样不就可以分开了吗
    </td>
    </tr>
    </c:forEach>
    示例:
    <body>
       <%
       List<User> users = new ArrayList<User>();
       for(int i=0;i<5;i++)
       {
       User user = new User();
       user.setName("user_"+i);
       user.setAge(22+i);
       users.add(user);
       }
       request.setAttribute("users",users);
        %>
        <table cellpadding="0" cellspacing="0" width="60%" border="1">
        <caption>用户列表</caption>
        <tr><td>姓名</td>
        <td>年龄</td>
        <td>index</td>
        <td>count</td>
        </tr>
       <c:forEach var="user" items="${users}" varStatus="status">
        <tr class="${status.index%2+1}">
        <td>${user.name}</td>
        <td>${user.age}</td>
        <td>${status.index}</td>
        <td>${status.count}</td>
        </tr>
        </c:forEach>
        </table>
      </body>
      

  7.   

    这样试试看while (rs.next()){
      Map map=new HashMap();
      for(int i=1;i<27;i++){
          map.put(Integer.toString(i),rs.getString(i));
      }
      list.add(map);
    }
      

  8.   


    while (rs.next()){
    for(int i=1;i<27;i++){
    list.add(rs.getString(i));
    }
    }那也能封装成一个javaBean啊、 你这都有结果集了 当然能封装成一个List<泛型> 的集合你不用有映射文件的   一个DTO  专门用来存放结果集显示的类  而且这个类跟数据库里有没有该类的映射表完全没有关系、它只是一个用来存放类的显示集合、
      

  9.   

    <td width="88">${factoryps.get(0)}</td>这些代码里的factoryps改为Produce试试。如:<td width="88">${Produce.get(0)}</td>
      

  10.   

    自己在整了一层循环能正常输出了,但是貌似报了个错!!我是这么干的!代码如下::、<c:forEach var="Produce" items="${factoryps }" varStatus="count">

    <c:forEach var="x" begin="0" end="${fn:length(factoryps)}" step="1">
    <tr align="center"  height="24px">

    <td width="88">${factoryps.get(x*26)}</td>
         <td width="122">${factoryps.get(x*26+1)}</td>
         <td width="73">${factoryps.get(x*26+2)}</td>
         <td width="70">${factoryps.get(x*26+3)}</td>
         <td width="44">${factoryps.get(x*26+4)}</td>
         <td width="100">${factoryps.get(x*26+5)}</td。。报了个错,貌似是长度超出限制了!
    我是准备在action里面在整一个变量比如:temp=factoryps.size()-1;
    然后把temp  赋给end  
    不知道诸位有没有好点的点子!!  我感觉这个有点麻烦,
    又是一堆get,set。
      

  11.   

    因为我的那个存储过程查出来的量有一堆,,做这个玩意的话,有几十个字段,感觉太麻烦了啊!! 又没有hibernate映射,一切都得搬砖式的写
      

  12.   

    把map放在list里面取出来的时候会不会顺序搞乱啊!!!这个 我去试验一下!
      

  13.   

    arrylist 里面是这么写的:private void RangeCheck(int index) {
    if (index >= size)
        throw new IndexOutOfBoundsException(
    "Index: "+index+", Size: "+size);
        }因为index=size  所以抛出异常,,这个如果不管他 会出什么后果呢!!!
      

  14.   

    同意ls,不管怎么样,后台都可以封装成JavaBean,你想要什么样存储结构就怎么封装了
      

  15.   


    你这方法已经是List<T> 的返回类型了、 只要弄个dto(JavaBean) 强转一下就可以了    而你又弄了一堆方法为了输出Object里面的属性、那倒不如拿java反射做吧、
    不会、 再说map也有LinkedHashMap() 也可以来保证顺序
      

  16.   


    java反射做啊 ,这个是不是也就相当于一个map了,这样子的话,我得预定义一个表头了!!!,,,我现在得到的list相当于是一个一维数组!!!
      

  17.   

    这样子貌似比我的那个好点,因为我这个架子肯定会移植的,回去跑其它的存储过程报表!,这样子的话就相当于用了struts的解耦思想啦!