【问题标题】:Looping Arraylist of Arrays java循环数组列表java
【发布时间】:2015-08-28 23:32:31
【问题描述】:

我在模型中有一个方法可以从结果集中创建一个 ArrayList 数组,我需要从 jsp 交叉它,我做不到,有什么帮助吗?

这是数组列表的代码

    public ArrayList listar(){

    String sql="select * from eventos";
    ArrayList lista=new ArrayList();
    try {
        st=con.createStatement();
        rs=st.executeQuery(sql);

        int NumColumnas=getRows(rs);

        while(rs.next()){
            String Fila[]=new String [NumColumnas];   
            for(int x=0;x<NumColumnas;x++){
                Fila[x]=rs.getObject(x+1).toString();
            }
             lista.add(Fila);
        }

    } catch (SQLException ex) {
        Logger.getLogger(EventosBean.class.getName()).log(Level.SEVERE, null, ex);
    }
    return lista;
}

从 jsp 我有这段代码,我以这种格式返回值 [Ljava.lang.String;@39dc94a4 [Ljava.lang.String;@5d013b69

    EventosBean ev=new EventosBean();
    ArrayList<EventosBean>arrayList=ev.listar();
    out.println(arrayList.size());
    Iterator<EventosBean> iterator = arrayList.iterator();
    while (iterator.hasNext()) {    
        out.println(iterator.next());
    }

【问题讨论】:

    标签: java arrays jsp arraylist javabeans


    【解决方案1】:

    出了点问题。在您的 listar 方法中,您将返回一个 ArrayList 。这个ArrayList包含String[]类型的对象。您在ArrayList&lt;EventosBean&gt; 中捕获此输出,它需要EventosBean 类型的对象。

    如果您希望在 JSP 上打印在 listar 返回的 ArrayList 中添加的 String[] 的内容,请对您的代码进行一些更改,如下所示。

    public ArrayList<String[]> listar(){
    
        String sql="select * from eventos";
        ArrayList<String[]> lista=new ArrayList<String[]>();
        try {
            st=con.createStatement();
            rs=st.executeQuery(sql);
    
            int NumColumnas=getRows(rs);
    
            while(rs.next()){
                String Fila[]=new String [NumColumnas];   
                for(int x=0;x<NumColumnas;x++){
                    Fila[x]=rs.getObject(x+1).toString();
                }
                 lista.add(Fila);
            }
    
        } catch (SQLException ex) {
            Logger.getLogger(EventosBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lista;
    }
    

    在你打电话给listar的班级里

    EventosBean ev=new EventosBean();
    ArrayList<String[]> arrayList=ev.listar();
    out.println(arrayList.size());
    for(String[] strArray : arrayList){
        String str="";
        for(String str1: strArray)
          str=str+" "+str1;
    
        out.println(str);
    }
    

    【讨论】:

    • 谢谢,但如果我删除它并同意索引“strArray [ 1]"同意记录的ID,这也是错误的......我认为需要另一种方式来做到这一点。
    【解决方案2】:

    您需要在 http servlet 请求中设置属性并在您的 jsp 中使用它:

    /** Java 控制器*/

    request.setAttribute("events", lista);
    

    /** JSP */

    List<String> events = (List<String>) request.getAttribute("events");
    

    【讨论】:

    • 是的,我知道,为简单起见,直接从jsp访问,不需要从servlet传递。
    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2018-01-21
    • 2015-05-08
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多