无法显示从数据库中获取的数据

时间:2017-09-22 08:40:42

标签: database jsf

我是stackoverflow和Java的新手。我试图从数据库中获取数据,然后在JSF页面中显示它。 对于表,我有一个模型:BusesInfo.java,包含表的属性的getter和setter。 然后我还有BusesDao从数据库中获取数据并将其存储在数组列表中。将这些数据链接到JSF页面的BusesInfoBean。与数据库的连接是成功的。 JSF页面包含一个在调用BusesInfo.attribute的列中调用BusesInfobean.busesInfo的表 拜托我需要你的帮忙!您可以在下面找到示例代码:

package beans;

import daos.BusesDao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import models.BusesInfo;

@ViewScoped
public class BusesInfoBean implements Serializable {

private final BusesDao busesDao = new BusesDao();
private ArrayList<BusesInfo> busesInfo; 



 public BusesInfoBean(){}

    @PostConstruct
public void init(){
    try {            
        busesInfo = busesDao.buildBusesInfo();            
    } catch (Exception ex) {
        Logger.getLogger(ManageEventsBean.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public ArrayList<BusesInfo> getBusesInfo() {
    return busesInfo;
}

public void setBusesInfo(ArrayList<BusesInfo> busesInfo) {
    this.busesInfo = busesInfo;
}

}

BusesDao.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import models.BusesInfo;
import java.util.logging.Logger;
import java.util.logging.Level;

public class BusesDao extends ConnectionDao {


    public ArrayList<BusesInfo> buildBusesInfo() throws Exception {
    ArrayList<BusesInfo> list = new ArrayList<>();
    Connection conn = getConnection();

    try {            
        String sql = "SELECT * FROM BUSES_INFO";                        
        PreparedStatement ps = conn.prepareStatement(sql);            

        ResultSet rs = ps.executeQuery();           

        while (rs.next()) {
            list.add(populateBusesInfo(rs));
        }

        rs.close();
        ps.close();

        return list;
    } catch (SQLException e) {
        throw new SQLException(e.getMessage());
    }
}

    private BusesInfo populateBusesInfo(ResultSet rs) throws SQLException {
    BusesInfo busesInfo = new BusesInfo();

    busesInfo.setBusID(rs.getInt("BUS_ID"));
    busesInfo.setDriverID(rs.getInt("DRIVER_ID"));
    busesInfo.setDepartureTime(rs.getString("DEPARTURE_TIME"));                    
    busesInfo.setArrivalTime(rs.getString("ARRIVAL_TIME"));                    
    busesInfo.setRouteEn(rs.getString("ROUTE_EN"));                    
    busesInfo.setRouteAr(rs.getString("ROUTE_AR"));                    
    busesInfo.setLicensePlate(rs.getString("LICENSE_PLATE")); 
    busesInfo.setCapacity(rs.getInt("CAPACITY"));
    return busesInfo;
}

public static void main(String [] args){        
    try {
        BusesDao busesDao = new BusesDao();                
        ArrayList<BusesInfo> busesInfo = busesDao.buildBusesInfo();
    } catch (Exception ex) {
        Logger.getLogger(EventsDao.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

模型类BusesInfo只包含getter和setter:

public class BusesInfo implements Serializable {

private int busID;
private int driverID;
private String departureTime;
private String arrivalTime;
private String routeEn;
private String routeAr;
private String licensePlate;
private int capacity;

public BusesInfo(){}
/**
 *
 * @param busID
 * @param driverID
 * @param departureTime
 * @param arrivalTime
 * @param routeEn
 * @param routeAr
 * @param licensePlate
 * @param capacity
 */
public BusesInfo(int busID, int driverID, String departureTime, String arrivalTime, String routeEn, String routeAr, String licensePlate, int capacity) {
    this.busID = busID;
    this.driverID = driverID;
    this.departureTime = departureTime;
    this.arrivalTime = arrivalTime;
    this.routeEn = routeEn;
    this.routeAr = routeAr;
    this.licensePlate = licensePlate;
    this.capacity = capacity;
}

public int getBusID() {
    return busID;
}

public void setBusID(int busID) {
    this.busID = busID;
}

public int getDriverID() {
    return driverID;
}

public void setDriverID(int driverID) {
    this.driverID = driverID;
}

public String getDepartureTime() {
    return departureTime;
}

public void setDepartureTime(String departureTime) {
    this.departureTime = departureTime;
}

public String getArrivalTime() {
    return arrivalTime;
}

public void setArrivalTime(String arrivalTime) {
    this.arrivalTime = arrivalTime;
}

public String getRouteEn() {
    return routeEn;
}

public void setRouteEn(String routeEn) {
    this.routeEn = routeEn;
}

public String getRouteAr() {
    return routeAr;
}

public void setRouteAr(String routeAr) {
    this.routeAr = routeAr;
}

public String getLicensePlate() {
    return licensePlate;
}

public void setLicensePlate(String licensePlate) {
    this.licensePlate = licensePlate;
}

public int getCapacity() {
    return capacity;
}

public void setCapacity(int capacity) {
    this.capacity = capacity;
}

}

JSF页面:

 <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
    <title>#{msgs.buses}</title>
</h:head>
<h:body>
    <div>
        <ui:decorate template="/app_templates/app_template.xhtml">
            <h:form id="bus_info_form">
                <p:dataTable 
                       id="bus_info_tbl"
                       value = "#{busesInfoBean.busesInfo}"
                       class = "dataTable"
                       var="event"
                       rows="2"
                       dir="#{langBean.dir}"
                       emptyMessage="#{msgs.no_buses}"
                       paginator="true"
                       paginatorPosition="top" 
                       paginatorTemplate="#{langBean.isEnglish? '{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}' : '{RowsPerPageDropdown} {LastPageLink} {NextPageLink} {PageLinks} {PreviousPageLink} {FirstPageLink}'}"
                         >
                        <p:ajax event="rowSelectRadio"
                          update=":bus_info_form:bus_info_tbl"/>  

                        <f:facet name="header" id="header">
                            #{msgs.buses}
                        </f:facet> 

                        <p:column selectionMode="single" style="width:5%"/>

                        <p:column headerText="#{msgs.bus_id}"
                                  style="width:15%"
                                  sortBy="#{busesInfo.busID}">                    
                            <h:outputText value="#{busesInfo.busID}"/>  
                        </p:column>

                         <p:column headerText="#{msgs.driver_id}"
                                  style="width:15%"
                                  sortBy="#{busesInfo.driverID}">                    
                            <h:outputText value="#{busesInfo.driverID}"/>  
                        </p:column>

                        <p:column headerText="#{msgs.departure_time}"
                                  style="width:15%"
                                  sortBy="#{busesInfo.departureTime}">                    
                            <h:outputText value="#{busesInfo.departureTime}"/>  
                        </p:column>

                        <p:column headerText="#{msgs.arrival_time}"
                                  style="width:15%"
                                  sortBy="#{busesInfo.arrivalTime}">                    
                            <h:outputText value="#{busesInfo.arrivalTime}"/>  
                        </p:column>

                        <p:column headerText="#{msgs.route}"
                            style="width:20%"
                            filterBy="#{langBean.isEnglish?busesInfo.routeEn:busesInfo.routeAr}"
                            filterMatchMode="contains"
                            sortBy="#{langBean.isEnglish?busesInfo.routeEn:busesInfo.routeAr}">                    
                          <h:outputText value="#{langBean.isEnglish?busesInfo.routeEn:busesInfo.routeAr}"/>  
                        </p:column>

                        <p:column headerText="#{msgs.license_plate}"
                                  style="width:15%"
                                  sortBy="#{busesInfo.licensePlate}">                    
                            <h:outputText value="#{busesInfo.licensePlate}"/>  
                        </p:column>

                        <p:column headerText="#{msgs.capacity}"
                                  style="width:15%"
                                  sortBy="#{busesInfo.capacity}">                    
                            <h:outputText value="#{busesInfo.capacity}"/>  
                        </p:column>

                    </p:dataTable>
            </h:form>

        </ui:decorate>

    </div>
</h:body>
</html>

0 个答案:

没有答案