jsf - Datatable Row Selection Primefaces -


i trying implement row selection datatable primefaces, when click on row, nothing displays. i've narrowed down setter selected car not getting called, not know how set this. here's code, can help?

tablebean

import java.io.serializable;   import java.util.arraylist;   import java.util.list;   import java.util.uuid;   import javax.faces.bean.managedbean; import javax.faces.bean.viewscoped;  @managedbean(name="tablebean") @viewscoped public class viewcdeployments implements serializable {     private static final long serialversionuid = 2213388781051004157l;      private final static string[] colors;        private final static string[] manufacturers;        static {           colors = new string[10];           colors[0] = "black";           colors[1] = "white";           colors[2] = "green";           colors[3] = "red";           colors[4] = "blue";           colors[5] = "orange";           colors[6] = "silver";           colors[7] = "yellow";           colors[8] = "brown";           colors[9] = "maroon";            manufacturers = new string[10];           manufacturers[0] = "mercedes";           manufacturers[1] = "bmw";           manufacturers[2] = "volvo";           manufacturers[3] = "audi";           manufacturers[4] = "renault";           manufacturers[5] = "opel";           manufacturers[6] = "volkswagen";           manufacturers[7] = "chrysler";           manufacturers[8] = "ferrari";           manufacturers[9] = "ford";       }        private list<car> cars;        private car selectedcar;        private car[] selectedcars;        private cardatamodel mediumcarsmodel;        public viewcdeployments() {           cars = new arraylist<car>();            populaterandomcars(cars, 50);            mediumcarsmodel = new cardatamodel(cars);       }        public car[] getselectedcars() {           return selectedcars;       }       public void setselectedcars(car[] selectedcars) {           this.selectedcars = selectedcars;       }        public car getselectedcar() {           return selectedcar;       }        public void setselectedcar(car selectedcar) {           this.selectedcar = selectedcar;       }        private void populaterandomcars(list<car> list, int size) {           for(int = 0 ; < size ; i++)               list.add(new car(getrandommodel(), getrandomyear(), getrandommanufacturer(), getrandomcolor()));       }        private int getrandomyear() {           return (int) (math.random() * 50 + 1960);       }        private string getrandomcolor() {           return colors[(int) (math.random() * 10)];       }        private string getrandommanufacturer() {           return manufacturers[(int) (math.random() * 10)];       }        private string getrandommodel() {           return uuid.randomuuid().tostring().substring(0, 8);       }        public cardatamodel getmediumcarsmodel() {           return mediumcarsmodel;       }        public list<car> getcars() {         return cars;     } } 

car.java

import java.io.serializable;  public class car implements serializable {          /**      *       */     private static final long serialversionuid = 240545116337689611l;         private string model;         private int year;         private string manufacturer;         private string color;     private int price;      public car(string model, int year, string manufacturer, string color) {                 this.model = model;                 this.year = year;                 this.manufacturer = manufacturer;                 this.color = color;         }          public car(string model, int year, string manufacturer, string color, int price) {                 this.model = model;                 this.year = year;                 this.manufacturer = manufacturer;                 this.color = color;         this.price = price;         }          public string getmodel() {                 return model;         }          public void setmodel(string model) {                 this.model = model;         }          public int getyear() {                 return year;         }          public void setyear(int year) {                 this.year = year;         }          public string getmanufacturer() {                 return manufacturer;         }          public void setmanufacturer(string manufacturer) {                 this.manufacturer = manufacturer;         }          public string getcolor() {                 return color;         }          public void setcolor(string color) {                 this.color = color;         }       public int getprice() {         return price;     }      public void setprice(int price) {         this.price = price;     }          @override         public boolean equals(object obj) {                 if(obj == null)                         return false;                  if(!(obj instanceof car))                         return false;                  car compare = (car) obj;                  return compare.model.equals(this.model);         }          @override         public int hashcode() {                 int hash = 1;              return hash * 31 + model.hashcode();         }      @override     public string tostring() {         return "car{" + "model=" + model + ", year=" + year + ", manufacturer=" + manufacturer + ", color=" + color + ", price=" + price + '}';     } } 

cardatamodel

import java.io.serializable; import java.util.list; import javax.faces.model.listdatamodel; import org.primefaces.model.selectabledatamodel;  public class cardatamodel extends listdatamodel<car> implements selectabledatamodel<car>, serializable {        /**      *       */     private static final long serialversionuid = -5147159758418722534l;      public cardatamodel() {     }      public cardatamodel(list<car> data) {         super(data);     }      @suppresswarnings("unchecked")     @override     public car getrowdata(string rowkey) {         //in real app, more efficient way query rowkey should implemented deal huge data          list<car> cars = (list<car>) getwrappeddata();          for(car car : cars) {             if(car.getmodel().equals(rowkey))                 return car;         }          return null;     }      @override     public object getrowkey(car car) {         return car.getmodel();     } } 

xhtml

    <ui:composition xmlns="http://www.w3.org/1999/xhtml"     xmlns:h="http://java.sun.com/jsf/html"     xmlns:f="http://java.sun.com/jsf/core"     xmlns:p="http://primefaces.org/ui"     xmlns:ui="http://java.sun.com/jsf/facelets">      <h:form id="form">              <p:datatable id="cars" var="car" value="#{tablebean.mediumcarsmodel}" paginator="true" rows="10"                    selection="#{tablebean.selectedcar}">                   <f:facet name="header">                     radiobutton based selection                   </f:facet>                  <p:column selectionmode="single" style="width:18px" />                  <p:column headertext="model">                     #{car.model}                   </p:column>                  <p:column headertext="year">                     #{car.year}                   </p:column>                  <p:column headertext="manufacturer" >                     #{car.manufacturer}                   </p:column>                    <p:column headertext="color">                     #{car.color}                   </p:column>                  <f:facet name="footer">                     <p:commandbutton id="viewcommand" value="view" icon="ui-icon-search"                                        update=":frmcontent:form:displaysingle" oncomplete="singlecardialog.show()"/>                   </f:facet>               </p:datatable>                 <p:dialog id="dialog" header="car detail" widgetvar="singlecardialog" resizable="false"                         showeffect="fade" hideeffect="explode">                    <h:panelgrid id="displaysingle" columns="2" cellpadding="4">                        <f:facet name="header">                           header                      </f:facet>                        <h:outputtext value="model:" />                       <h:outputtext value="#{tablebean.selectedcar.model}" />                        <h:outputtext value="year:" />                       <h:outputtext value="#{tablebean.selectedcar.year}" />                        <h:outputtext value="manufacturer:" />                       <h:outputtext value="#{tablebean.selectedcar.manufacturer}" />                        <h:outputtext value="color:" />                       <h:outputtext value="#{tablebean.selectedcar.color}" />                   </h:panelgrid>               </p:dialog>              </h:form>   </ui:composition>  

just add datatable rowkey. without property selection won't work.

        <p:datatable id="cars" var="car" value="#{tablebean.mediumcarsmodel}" paginator="true" rows="10" rowkey="#{car.manufacturer}" selection="#{tablebean.selectedcar}">  

the rowkey must unique in list of values.


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -