I´m creating a page that first enter data, and after reload de list directly of database.
I but a breakpoint at "getFornecedores" (data from p:datatable) and realized that the request is loaded 10 times. I mean, I have 10 "select" requst to my database, just rendering the page.
I know that should be a stupid mistake, can anybody help me ?
My JSF :
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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<title>Cadastro de Fornecedor</title>
</h:head>
<h:body>
<h:form id="form">
<p:panel header="Criar um novo fornecedor">
<h:panelGrid columns="2">
<h:outputLabel value="Nome: *" for="txt_nome"></h:outputLabel>
<h:inputText id="txt_nome" value="#{fornecedorBean.fornecedor.nome}" required="true"/>
<p:commandButton value="Reset" type="reset"/>
<p:commandButton value="Add" update="listagem" action="#{fornecedorBean.save}" />
</h:panelGrid>
</p:panel>
<p:dataTable id="listagem" value="#{fornecedorBean.fornecedores}" var="row" loadingMessage="Carregando Fornecedores"
emptyMessage="Não há Parceiros cadastrados" selection="#{fornecedorBean.fornecedor}" selectionMode="single">
<p:column>
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{row.id}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{row.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Operação" />
</f:facet>
<p:commandLink value="Remove" update="form:listagem" />
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
Code: Select all
package br.com.diogo.controller;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.diogo.domain.FornecedorEntity;
import br.com.diogo.service.FornecedorService;
@Named("fornecedorBean")
@Scope("request")
public class FornecedorBean {
@Inject
@Named("fornecedorService")
private FornecedorService service;
private FornecedorEntity fornecedor = new FornecedorEntity();
public void setService(FornecedorService service) {
this.service = service;
}
/**
*
* @throws BusinessException
*/
public void save() {
try {
this.service.save(this.fornecedor);
} catch (Exception e) {
e.printStackTrace();
}
}
public FornecedorEntity getFornecedor() {
return fornecedor;
}
public void setFornecedor(FornecedorEntity fornecedor) {
this.fornecedor = fornecedor;
}
public List<FornecedorEntity> getFornecedores() {
List<FornecedorEntity> list = new ArrayList<FornecedorEntity>();
try {
list = this.service.getAll();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
Thanks a lot.