无法使用dataTable显示数据库表值

时间:2011-05-09 08:09:37

标签: jsf jsf-2

我有一个bean类员工,其中包含属性id,名称以及公共getter和setter。

我正在使用以下bean进行数据库连接并从数据库表中获取值。

TableBean.java:

  public class TableBean{
    public Connection getVConnection() throws Exception{
      String driver = "oracle.jdbc.driver.OracleDriver";
      String url = "jdbc:oracle:thin:@localhost:1521:globldb3";
      String username = "scott";
      String password = "tiger";
      Class.forName(driver);
      Connection conn = DriverManager.getConnection(url, username, password);
      return conn;
      }    
    public List<Employee> getPerInfoAll() {
    int i = 0;
    Connection conn = null;
    PreparedStatement pstmt = null;
    List<Employee> perInfoAll = new ArrayList(); 
     try {
        conn = getVConnection();
            String query = "select * from employee where e_id>5400";
            pstmt = conn.prepareStatement(query);
            rs = pstmt.executeQuery();
            while(rs.next()){
           System.out.println(rs.getString(1));
               perInfoAll.add(i,newEmployee(rs.getInt(1),rs.getString(2)));
               i++;
             }
             pstmt.close();
             rs.close();
             conn.close();    
      }catch (Exception e){
           e.printStackTrace();
      }
     return perInfoAll;
     }

以下是jsf页面:

 <h:dataTable value="#{TableBean.perInfoAll}" var="e">
        <h:column>
            <f:facet name="header">Employee id</f:facet>
            <h:outputText value="#{e.id}">
        </h:column>

        <h:column>
            <f:facet name="header">Employee name</f:facet>
                     <h:outputText value="#{e.name}">
        </h:column>
    </h:dataTable>

请回复。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

我认为(again)可能是getter / setter方法命名的问题。如果您的财产名为

private List<Employee> perInfoAll

getter方法必须是

public List<Employee> getPerInfoAll() { ... }

注意方法名称中的大写“P”。

此外,您在facelet中表达el后不需要分号。