RegisterBean.java:如下
package datatabledemo;public class RegisterBean {
    private static String name;
    private static String pwd;    public RegisterBean(){
    }
    public RegisterBean(String name,String pwd) {
        this.name=name;
        this.pwd=pwd;
    }    public void setName(String name) {
        this.name = name;
    }    public void setPwd(String pwd) {
        this.pwd = pwd;
    }    public String getName() {
        return name;
    }    public String getPwd() {
        return pwd;
    }
ConnectionDAO.java:如下
package datatabledemo;import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;public class ConnectionDAO {
    public ConnectionDAO() {
    }
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/db_timbering";
    private static String user = "root";
    private static String pwd = "11111111";
    public static Connection getConnection() {
        Connection con = null;
        try {
            Class.forName(driver);
            con = DriverManager.getConnection(url, user, pwd);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return con;
    }
    public static void closeConnection(Connection con) {
        try {
            if (con != null) {
                con.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    public static void closeStatement(Statement st) {
        try {
            if (st != null) {
                st.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    public static void closeResultSet(ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
UserBean.java如下
package datatabledemo;
import java.sql.*;
import java.util.ArrayList;public class UserBean {
    public UserBean() {
    }
    private Connection con = null;
    private Statement st = null;
    private ResultSet rs = null;
    ConnectionDAO cd=new ConnectionDAO();
    public ArrayList getSearchManager(){
        ArrayList list = new ArrayList();
        String sql = "select * from user";
        try{
            con = cd.getConnection();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            while(rs.next()){
                String name=rs.getString("name");
                String pwd=rs.getString("password");
                RegisterBean rb=new RegisterBean(name,pwd);
                list.add(rb);
            }
            
        }catch(SQLException e){
            e.printStackTrace();
        }finally{
            cd.closeResultSet(rs);
            cd.closeStatement(st);
            cd.closeConnection(con);
        }
        return list;
    }
}
faces-config文件如下
<faces-config xmlns="http://java.sun.com/JSF/Configuration">
  <managed-bean>
    <managed-bean-name>bean1</managed-bean-name>
    <managed-bean-class>datatabledemo.UserBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <managed-bean>
    <managed-bean-name>bean2</managed-bean-name>
    <managed-bean-class>datatabledemo.RegisterBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
</faces-config>
JSP页面如下:
<%@page contentType="text/html; charset=GBK"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<html>
  <head>
    <title>jsp2</title>
  </head>
  <body bgcolor="#ffffff">
    <f:view>
      <h:form>
        <h:dataTable var="Register" value="#{bean1.searchManager}">
          <h:column>
            <h:outputText value="#{bean2.name}"/>
          </h:column>
          <h:column>
            <h:outputText value="#{bean2.pwd}"/>
          </h:column>
        </h:dataTable>
      </h:form>
    </f:view>
  </body>
</html>问题:我的数据库的user表中的数据结构是这样的 name password
                                       aaa   111
                                       bbb   222我用JSF中的<h:dataTable>显示出来,但是在我的jsp页面显示结果却是这样的:
                                      bbb  222
                                      bbb  222而不是我要的                               aaa   111 这样的结果
                                      bbb   222
后来换个表查询发现显示的数据行数是正确的,但是内容总是重复显示ArrayList中的最后一条数据!请帮我看看我的哪里写错了导致总是重复显示一条数据!
另外还有,在数据模型中的属性如    private static String name;
                             private static String pwd;
去掉static就在<h:dataTable>连显示都不显示了,加了才显示是为什么?

解决方案 »

  1.   

    <h:dataTable   var= "Register "   value= "#{bean1.searchManager} "> 
                        <h:column> 
                            <h:outputText   value= "#{bean2.name} "/> 
                        </h:column> 
                        <h:column> 
                            <h:outputText   value= "#{bean2.pwd} "/> 
                        </h:column> 
                    </h:dataTable> 
    这的问题
    h:dataTable绑定的是一个数组或list 所以bean1.searchManager应该是数组或者list 不用担心转换的问题
    它自己会帮你转换
    主要的问题出在<h:outputText   value= "#{bean2.name} "/>这里
    应该改为<h:outputText   value= "#{Register .name} "/> 也就是说是你定义的名字 实际上h:dataTable的作用我的理解是自动帮你转换数组或者list 不需要你一个一个取出来显示ps:你的分数貌似给的少了点  不厚道 
      

  2.   

    谢谢chenwei175528,我为了这个郁闷了2天了!问题解决