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á-lo
</f:facet>
<p:column selectionMode="multiple" style="width:2%" />
<p:column headerText="Có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ção" style="text-align: center; width: 40px;">
<h:outputText value="#{item.detail}"/>
</p:column>
<p:column headerText="Preç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ção:" />
<h:outputText value="#{datatableBean.selected.detail}" />
<h:outputText value="Preç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);
}
}