DataTable multiple request

UI Components for JSF
Post Reply
diogoprime
Posts: 2
Joined: 27 Aug 2010, 15:12

27 Aug 2010, 15:24

Hello All,

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>
And my Bean :

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

}
I'm using JPA2/Spring3/Hibernate3/JSF2.

Thanks a lot.

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

27 Aug 2010, 20:34

UIData and general in JSF can call getters multiple times, so it's not a good practice to write logic inside these getters.

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: Google [Bot] and 45 guests