[RESOLVIDO]p:dataTable checkbox

Pessoal , Fiz um DataTable e adicionei a primeira coluna um chekbox, porem quando eu clico no botao Mostrar Produto, No modal os dados aparecem em branco :

Segue abaixo o meu codigo


<?xml version='1.0' encoding='UTF-8' ?>
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
     <title>Datatable example</title>
</h:head>
<h:body>
    <h:form id="formMessages" >
        <p:growl id="messages" widgetVar="messages" showDetail="true" life="5000" sticky="false" autoUpdate="true"/>
     </h:form>
<h:form id="formPrincipal" >
        <p:dataTable value="#{datatableBean.products}" var="item"
                     selection="#{datatableBean.selected}" 
                      rowKey="#{item.id}"
                      emptyMessage="Nenhum produto encontrado!"
                      style="margin-top: 5px;" >
 <!--selectionMode="single"//-->
            <f:facet name="header">
                Clique no item para selecion&aacute;-lo
            </f:facet>

            <p:column selectionMode="multiple" style="width:2%" /> 

            <p:column headerText="C&oacute;digo" style="text-align: center; width: 40px;">
                <h:outputText value="#{item.id}"/>
            </p:column>
            <p:column headerText="Nome" style="text-align: center; width: 40px;">
                <h:outputText value="#{item.name}"/>
            </p:column>
            <p:column headerText="Descri&ccedil;&atilde;o" style="text-align: center; width: 40px;">
                <h:outputText value="#{item.detail}"/>
            </p:column>
            <p:column headerText="Pre&ccedil;o" style="text-align: center; width: 40px;">
                <h:outputText value="#{item.price}" />
            </p:column>
            <f:facet name="footer">
                <p:commandButton id="viewButton" value="Mostrar produto" icon="ui-icon-search"
                update=":formPrincipal:display" oncomplete="productDialog.show()"/>
            </f:facet>
       </p:dataTable>
        <p:dialog id="dialog" header="Produto selecionado" widgetVar="productDialog" resizable="false"
        width="400" showEffect="clip" hideEffect="fold">

                <h:panelGrid id="display" columns="2" cellpadding="4">

                        <h:outputText value="Nome:" />
                        <h:outputText value="#{datatableBean.selected.name}" />

                        <h:outputText value="Descri&ccedil;&atilde;o:" />
                        <h:outputText value="#{datatableBean.selected.detail}" />

                        <h:outputText value="Pre&ccedil;o:" />
                        <h:outputText value="#{datatableBean.selected.price}" />

                </h:panelGrid>
        </p:dialog>
</h:form>
</h:body>
</html>
********************************************Bean



import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import modelo.Product;

/**
 *
 * @author Evandro
 */
@Named
@RequestScoped
public class DatatableBean {
    
@PostConstruct
public void init(){
products = new ArrayList<Product>();
products.add(new Product(1,"Sabonete Cheirinho", "chiii", 5.88));
products.add(new Product(2,"Macarrão de Yakisoba 500g", "hummmm", 4.32));
products.add(new Product(3,"Refrigerante Tubaina 2L", "ehhhh", 1.52));
products.add(new Product(4,"Travesseiro de pedra", "Ops!", 13.78));
 
}

private List<Product> products;
private Product selected;
 
public List<Product> getProducts() {
 return products;
}
 
public void setProducts(List<Product> products) {
this.products = products;
}
 
public Product getSelected() {
 return selected;
}
 
public void setSelected(Product selected) {
this.selected = selected;
FacesMessage msg = new FacesMessage("Produto selecionado!", "Produto: "+selected.getName());
msg.setSeverity(FacesMessage.SEVERITY_INFO);
FacesContext.getCurrentInstance().addMessage(null, msg);
}    
    
    
}


fiz, dessa forma, porem , quando eu checo, qual registros que estao selecionados ???
segue abaixo meu codigo


    <p:dataTable var="car" value="#{carBean.cars}" selection="#{carBean.selectedCars}"
         rowKey="#{car.year}" >
             <p:column selectionMode="multiple"/>
             
        <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="model" />  
            </f:facet>  
            <h:outputText value="#{car.model}" />  
        </p:column>               
             
        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Manu" />  
            </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:dataTable>
****************************


@Named
@RequestScoped
public class CarBean {
    
    
private List<Car> cars;
private Car selectedCar;
private Car[] selectedCars;
              


@PostConstruct
public void init(){
    cars = new ArrayList<Car>();
cars.add(new Car("myModel",2005,"ManufacturerX","blue"));
cars.add(new Car("myModel",2006,"ManufacturerX","blue"));
cars.add(new Car("myModel",2007,"ManufacturerX","blue"));
    System.out.print("teste");
}


/*public CarBean() {
cars = new ArrayList<Car>();
cars.add(new Car("myModel",2005,"ManufacturerX","blue"));

}*/




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

    public void setCars(List<Car> cars) {
        this.cars = cars;
    }

    public Car getSelectedCar() {
        return selectedCar;
    }

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

    public Car[] getSelectedCars() {
        return selectedCars;
    }

    public void setSelectedCars(Car[] selectedCars) {
        this.selectedCars = selectedCars;
    }
    
}

Tentei fazer isso :
Mas o problema que quando clico no botao nao entra no metodo teste


    <p:commandButton action="#{carBean.teste}" value="Enviar" />


**************************************
@ManagedBean
@ViewScoped
public class CarBean {

    public void teste() {  
        for (Car room : selectedCars) {   
            System.out.println(room.getYear());   
        }  
          
    }  

faltava o <h:form>, para funcionar