Bom dia,
sou iniciante com primeFaces, estou ccom um problema no meu dataTable, a paginação aparece, mas quando eu vou para a página seguinte os dados nao atualizam.
segue o código:
<p:dataTable var="prod" value="#{productManager.products}"
paginator="true" rows="5"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15"
emptyMessage="Nenhum produto selecionado">
<p:column>
<f:facet name="header">
<h:outputText value="ID"/>
</f:facet>
<h:outputText value="#{prod.id}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{prod.nome}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Preço" />
</f:facet>
<h:outputText value="#{prod.preco}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Desconto" />
</f:facet>
<h:outputText value="#{prod.desconto}%"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Editar produto" />
</f:facet>
<p:commandButton value="Editar" ajax="false" action="#{productManager.edit(prod)}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir produto" />
</f:facet>
<p:commandButton value="Excluir" ajax="false" action="#{productManager.delete(prod)}" />
</p:column>
</p:dataTable>
bean:
package ecommerce.web;
import ecommerce.ejb.CategoriaFacade;
import ecommerce.ejb.ProdutoFacade;
import ecommerce.entity.Categoria;
import ecommerce.entity.Produto;
import ecommerce.util.FacesMsg;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
/**
*
* @author FernandoADM
*/
@Named(value = "productManager")
@SessionScoped
public class ProductManager implements Serializable {
private Produto produto;
private UploadedFile file;
private Map categorias;
private List produtos;
private String pesqNome;
private Short pesqCat;
@EJB
ProdutoFacade produtoFacade;
@EJB
CategoriaFacade categoriaFacade;
/** Creates a new instance of ProductManager */
public ProductManager() {
produto = new Produto();
produto.setIdCategoria(new Categoria());
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public void setFile(UploadedFile file){
this.file = file;
}
public UploadedFile getFile(){
return file;
}
public void handleFileUpload(FileUploadEvent event) {
setFile(event.getFile());
FacesMsg.mensInfo("msg", "Upload completo!");
}
public Map getCategorias(){
categorias = new LinkedHashMap();
for(Categoria cat: categoriaFacade.findAll())
categorias.put(cat.getNome(), cat.getId());
return categorias;
}
public String pequisar(){
if(pesqNome == null || pesqNome.isEmpty()){
if(pesqCat == (short) -1)
this.produtos = produtoFacade.findAll();
else
this.produtos = (List) categoriaFacade.find(pesqCat).getProdutoCollection();
} else{
if(pesqCat == (short) -1)
this.produtos = (List) produtoFacade.getProductsWithName(pesqNome);
else
this.produtos = (List) produtoFacade.getProductsWithNameByCat(pesqNome,
categoriaFacade.find(pesqCat));
}
return null;
}
public List<Produto> getProducts(){
if(produtos == null)
produtos = produtoFacade.findAll();
return produtos;
}
public String save(){
FacesContext context = FacesContext.getCurrentInstance();
ServletContext sc = (ServletContext)context.getExternalContext().getContext();
String pathImages = sc.getRealPath("/resources/thumbs");
if(this.file != null){
produto.setImagem(file.getFileName());
saveImage(pathImages);
}
produto.setUltimoUpdate(new Date());
produto.setIdCategoria(categoriaFacade.find(produto.getIdCategoria().getId()));
if(produto.getId() == null){
produtoFacade.create(produto);
}
else{
produtoFacade.edit(produto);
}
newProduct();
return "showProducts";
}
private boolean saveImage(String path){
try{
FileOutputStream output;
int size = (int) file.getSize();
byte buf[] = new byte[size];
InputStream stream = file.getInputstream();
File fileToSave = new File((new StringBuilder())
.append(path).append("/").append(file.getFileName()).toString());
output = new FileOutputStream(fileToSave);
do
{
int count = stream.read(buf, 0, size);
if(count == -1)
break;
output.write(buf, 0, count);
} while(true);
file = null;
return true;
}catch(Exception ex){
}
return false;
}
public void newProduct(){
this.produto = new Produto();
this.produto.setIdCategoria(new Categoria());
getCategorias();
}
public String edit(Produto prod){
this.setProduto(prod);
return "cadProduto";
}
public String delete(Produto prod){
produtoFacade.remove(prod);
getProducts();
return null;
}
public String getPesqNome() {
return pesqNome;
}
public void setPesqNome(String pesq) {
this.pesqNome = pesq;
}
public Short getPesqCat() {
return pesqCat;
}
public void setPesqCat(Short pesqCat) {
this.pesqCat = pesqCat;
}
}
obrigado!