DataTable - Row Selection

UI Components for JSF
Post Reply
machine15
Posts: 1
Joined: 20 Oct 2011, 14:47

20 Oct 2011, 15:30

Hi folks,

Playing around the example provided on http://www.primefaces.org/showcase/ui/d ... Column.jsf does not work as expected.

What I'm getting as outcome: when the user click on 'detail button' a random record is been shown on carDialog not the selected one.

Any help or guidance are really appreciated here. I'm really new to this technology and really impresses me how faster you can get results.

Thanks in advance,
Paulo.

apache-tomcat-7.0.22
primefaces-2.2.1
mojarra-2.0.6

---

I have my code shared below...


Car entity

Code: Select all

package br.com.integrator;

import java.io.Serializable;

public class Car implements Serializable {

    /**
    * 
     */
    private static final long serialVersionUID = 1L;

    private String model;

    private int year;

    private String manufacturers;

    private String colors;

    public Car() {
    }
    public Car(String Model, int Year, String Manufacturer, String Color) {
          this.model=Model;
          this.year=Year;
          this.manufacturers=Manufacturer;
          this.colors=Color;
    }


    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 manufacturers;
    }

    public void setManufacturer(String manufacturers) {
          this.manufacturers = manufacturers;
    }

    public String getColor() {
          return colors;
    }

    public void setColor(String colors) {
          this.colors = colors;
    }

}

TableBean.java

Code: Select all

package br.com.integrator;

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.RequestScoped;

import br.com.integrator.Car;  


@ManagedBean(name="tableBean")
@RequestScoped
public class TableBean implements Serializable {  

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	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;  

	public TableBean() {
		cars = new ArrayList<Car>();  
		populateRandomCars(cars, 5);
	}  

	private void populateRandomCars(List<Car> list, int size) {  
		for(int i = 0 ; i < size ; i++)  
			list.add(new Car(getRandomModel(), getRandomYear(), getRandomManufacturer(), getRandomColor()));  
	}  

	// methods for record retrieval

	public Car getSelectedCar() {  
		return selectedCar;
		
	}  
	public void setSelectedCar(Car selectedCar) {  
		this.selectedCar = selectedCar;  
	}  

	public List<Car> getCars() {  
		return cars;  
	}  

	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);  
	}  
}  

dataTableRowSelection.xhtml

Code: Select all

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html 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.prime.com.tr/ui">

<h:head>
	<title>DataTable - Row Selection</title>
</h:head>
<h:body>
<h:form prependId="false">  
  
    <p:dataTable var="car" value="#{tableBean.cars}" paginator="true" rows="10">  
  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Model" />  
            </f:facet>  
            <h:outputText value="#{car.model}" />  
        </p:column>  
  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Year" />  
            </f:facet>  
            <h:outputText value="#{car.year}" />  
        </p:column>  
  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Manufacturer" />  
            </f:facet>  
            <h:outputText value="#{car.manufacturer}" />  
        </p:column>  
  
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Color" />  
            </f:facet>  
            <h:outputText value="#{car.color}" />  
        </p:column>  
  
         <p:column style="width:100px">  
            <p:commandButton update="display" oncomplete="carDialog.show()"  
                    image="ui-icon ui-icon-search">  
                <f:setPropertyActionListener value="#{car}"  
                    target="#{tableBean.selectedCar}" />  
            </p:commandButton>  
        </p:column>  
  
    </p:dataTable>  
  
    <p:dialog header="Car Detail" widgetVar="carDialog" resizable="false"  
              width="200" showEffect="explode" hideEffect="explode">  
  
        <h:panelGrid id="display" columns="2" cellpadding="4">  
  
            <f:facet name="header">  
                <p:graphicImage value="/images/cars/#{tableBean.selectedCar.manufacturer}.jpg"/>  
            </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>  
</h:body>
</html>

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 57 guests