p:dataTable单行选择

时间:2016-05-05 14:59:43

标签: jsf primefaces

我在PrimeFaces中从数据表中选择一行时遇到问题。托管bean中的所选对象为null。由于某种原因,来自数据表的选定对象未正确设置我的托管bean中的selectedItinerary属性。

   <p:dataTable id="singleDT" value="#{travellerSearchFlightsManagedBean.searchList}" var="s"  selectionMode="single" selection="#{travellerSearchFlightsManagedBean.selectedItinerary}" rowKey="#{s.iden}" >

                                <f:facet name="header">  
                                    Found itineraries
                                </f:facet>
                                <p:column headerText="Departure Location">
                                    <h:outputText value="#{s.departureLocation}" />  
                                </p:column>
                                <p:column headerText="Arrival Location">
                                    <h:outputText value="#{s.arrivalLocation}" />  
                                </p:column>
                                <p:column headerText="Departure Date">
                                    <h:outputText value="#{s.departureDate}" />  
                                </p:column>
                                <p:column headerText="Cost">
                                    <h:outputText value="#{s.cost}" />  
                                </p:column>
                                <p:column headerText="Stops">
                                    <h:outputText value="#{s.stopPrint}"   />  
                                </p:column>
                                <f:facet name="footer">
                                    <p:commandButton process="singleDT" value="Reserve itinerary" action="#{travellerSearchFlightsManagedBean.reserveFlight()}" />
                                </f:facet>

      </p:dataTable>

并且托管bean是这样的:

@Named(value = "travellerSearchFlightsManagedBean")
@RequestScoped
public class travellerSearchFlightsManagedBean{


@EJB
private itineraryTravellerFacadeLocal itineraryTravellerFacade;

@EJB
private itineraryFacadeLocal itineraryFacade;

@ManagedProperty(value="#{travellerLoginManagedBean}")
private travellerLoginManagedBean loginBean;
private String departureLocation;
private String arrivalLocation;
private Date departureDate;
private int departureHour;
private int departureMinute;
private int numPassengers;
private int maxStops;
private String economyOrBusiness;
private ArrayList<itineraryDTO> itinerariesList;
private ArrayList<itineraryTraveller> searchList;
private itineraryTraveller selectedItinerary;
private String stopPrint;
private static final Logger LOG = Logger.getLogger(travellerSearchFlightsManagedBean.class.getName());



public String getStopPrint() {
    return stopPrint;
}

public travellerLoginManagedBean getLoginBean() {
    return loginBean;
}



public void setLoginBean(travellerLoginManagedBean loginBean) {
    this.loginBean = loginBean;
}

public void setStopPrint(String stopPrint) {
    this.stopPrint = stopPrint;
}

public itineraryTraveller getSelectedItinerary() {
    return selectedItinerary;
}

public void setSelectedItinerary(itineraryTraveller selectedItinerary) {
    this.selectedItinerary = selectedItinerary;
}

public ArrayList<itineraryTraveller> getSearchList() {
    return searchList;
}

public void setSearchList(ArrayList<itineraryTraveller> searchList) {
    this.searchList = searchList;
}

public ArrayList<itineraryDTO> getItinerariesList() {
    return itinerariesList;
}

public void setItinerariesList(ArrayList<itineraryDTO> itinerariesList) {
    this.itinerariesList = itinerariesList;
}

public itineraryFacadeLocal getItineraryFacade() {
    return itineraryFacade;
}



public String getEconomyOrBusiness() {
    return economyOrBusiness;
}

public void setEconomyOrBusiness(String economyOrBusiness) {
    this.economyOrBusiness = economyOrBusiness;
}



public void setItineraryFacade(itineraryFacadeLocal itineraryFacade) {
    this.itineraryFacade = itineraryFacade;
}


public String getDepartureLocation() {
    return departureLocation;
}

public void setDepartureLocation(String departureLocation) {
    this.departureLocation = departureLocation;
}

public String getArrivalLocation() {
    return arrivalLocation;
}

public void setArrivalLocation(String arrivalLocation) {
    this.arrivalLocation = arrivalLocation;
}

public Date getDepartureDate() {
    return departureDate;
}

public void setDepartureDate(Date departureDate) {
    this.departureDate = departureDate;
}

public int getDepartureHour() {
    return departureHour;
}

public void setDepartureHour(int departureHour) {
    this.departureHour = departureHour;
}

public int getDepartureMinute() {
    return departureMinute;
}

public void setDepartureMinute(int departureMinute) {
    this.departureMinute = departureMinute;
}

public int getNumPassengers() {
    return numPassengers;
}

public void setNumPassengers(int numPassengers) {
    this.numPassengers = numPassengers;
}

public int getMaxStops() {
    return maxStops;
}

public void setMaxStops(int maxStops) {
    this.maxStops = maxStops;
}

public travellerSearchFlightsManagedBean() {
}

public void searchFlights(){

    try{
        int numPassengersEconomy=0;
        int numPassengersBusiness=0;
        if (economyOrBusiness.equals("Economy")){
            numPassengersEconomy=numPassengers;
        }else{
            numPassengersBusiness=numPassengers;
        }

        searchList = new ArrayList<itineraryTraveller>();
        itinerariesList= new ArrayList<itineraryDTO>();
        int id=itineraryFacade.findItineraries(itinerariesList,departureLocation, arrivalLocation,departureDate,numPassengersEconomy, numPassengersBusiness);
        searchList=itineraryFacade.listItineraries(maxStops,itinerariesList,arrivalLocation, departureLocation, numPassengersEconomy, numPassengersBusiness);
    } catch(NullPointerException e) {}

}


public void reserveFlight(){
    //if (){
    try{

        //status reserved when traveller reserves an itinerary
        selectedItinerary.setStatus('r');
        //set the userName from the user who reserved this itinerary before persist it in a shared among all users db

        //persist the reserved itinerary in the db
        itineraryTravellerFacade.create(selectedItinerary);

     } catch(NullPointerException e) {}
}

}

0 个答案:

没有答案