Update de p:datatable

2 respostas
B

Estou tendo dificuldade em atualizar via ajax um p:datatable. Já naveguei em vários fóruns e não consegui desvendar o problema. Quando faço um submit no p:commandbutton não atualiza a tabela via ajax. Segue o código, favor me ajudem.

managed bean / controller

@ManagedBean(name = comissao)

@ViewScoped

public class ComissaoBean {
//@ManagedProperty(value = "#{gerenciaComissao}")
private EntityManager gerenciaComissao;
private ContratosProcessado contrato = new ContratosProcessado();
private Lancamento lancamento = new Lancamento();
private Pessoa_Vinculada pessoa = new Pessoa_Vinculada();
private List<ContratosProcessado> contratos;
private List<Lancamento> lancamentos;
private List<Pessoa_Vinculada> pessoas;
private List<Pessoa_Vinculada> sugestoes;
private int aux = 0;
private String razao = null;
private boolean teste = true; 
private String teste2 = null;


public List<ContratosProcessado> getContratos() {
	if (this.contratos == null) {
		RepContratos rep = new RepContratos(this.gerenciaComissao);
		this.contratos = rep.buscaTodos();
	}
	return this.contratos;
}

public List<Lancamento> getLancamentos() {
	ELContext elContext = FacesContext.getCurrentInstance().getELContext();
	this.gerenciaComissao = (EntityManager) FacesContext.getCurrentInstance().getApplication()  
	   .getELResolver().getValue(elContext, null, "gerenciaComissao"); 
	System.out.println(aux + " lancamentos");
	if (this.lancamentos == null) {
		RepLancamento rep = new RepLancamento(this.gerenciaComissao);
		this.lancamentos = rep.buscaTodos(this.aux);
	}
	return this.lancamentos;
}	

public List<Pessoa_Vinculada> completaRazao(String str) {
	ELContext elContext = FacesContext.getCurrentInstance().getELContext();
	this.gerenciaComissao = (EntityManager) FacesContext.getCurrentInstance().getApplication()  
	   .getELResolver().getValue(elContext, null, "gerenciaComissao"); 	
	RepPessoa rep = new RepPessoa(gerenciaComissao);
	this.pessoas = rep.buscaTodos();
	sugestoes = new ArrayList<Pessoa_Vinculada>();
	for (Pessoa_Vinculada p : this.pessoas) {
		if (p.getRazao().startsWith(str)) {
			sugestoes.add(p);
			// System.out.println(sugestoes.toString());
			// aux2 = sugestoes.lastIndexOf(p);
			// System.out.println(aux2);
			this.razao = p.toString();
			System.out.println(this.razao);
		}
		
	}
	System.out.println(this.razao);
	this.pessoas = rep.buscaId(this.razao);
	for (Pessoa_Vinculada p : this.pessoas) {
		aux = p.getPv_id();
		System.out.println(aux);
		if (aux != 0){
			this.teste = true;
			System.out.println(this.teste);
		}
	}
	return sugestoes;
}

repositorio / dao tabela pessoa

public class RepPessoa {

private EntityManager gerenciaPessoa;	

public RepPessoa(EntityManager gerenciaPessoa) {
	this.gerenciaPessoa = gerenciaPessoa;
}

@SuppressWarnings("unchecked")
public List<Pessoa_Vinculada> buscaId(String str){
	Query query = this.gerenciaPessoa.createNativeQuery("select * from dbo.Pessoa_Vinculada where pv_razao = '" + str + "'",Pessoa_Vinculada.class);
	System.out.println("teste busca id" + str);
	return query.getResultList();
}

public Pessoa_Vinculada buscaRazao(String str) {
	System.out.println(str + "busca razao");
	Pessoa_Vinculada pessoa = new Pessoa_Vinculada();
	pessoa.setRazao(str);
	return pessoa;
}

@SuppressWarnings("unchecked")
public List<Pessoa_Vinculada> buscaTodos() {
	 Query query = this.gerenciaPessoa.createNativeQuery("select * from dbo.Pessoa_Vinculada order by pv_razao", Pessoa_Vinculada.class);
	 return query.getResultList();
}

}

dao tabela lancamento

public class RepLancamento {

private EntityManager gerenciaLancamento;

public RepLancamento(EntityManager gerenciaLancamento) {
	this.gerenciaLancamento = gerenciaLancamento;
}
	

@SuppressWarnings("unchecked")
public List<Lancamento> buscaTodos(int aux) {
	Query query = this.gerenciaLancamento.createNativeQuery(
			"select * from dbo.Lancamento where lasituacao is null and lacodcli = " + aux + "order by ladatavenc",
			Lancamento.class);
	return query.getResultList();
}

@SuppressWarnings("unchecked")
public List<Lancamento> lancaComissao() {
	Query query = this.gerenciaLancamento.createNativeQuery("");
	return query.getResultList();
}

}

view

<ui:composition template="/recursos/templates/template2.xhtml">

<ui:define name=“header”>

<h:form>

<h:outputLabel value=“Seja bem vindo, #{loginBean.usuario.nome}”

style=“right:5px;top:5px;font-size:14px;padding-right:10px” />

<h:commandLink styleClass=“sair” value=“sair”

action="#{loginBean.sair}" style=“font-size:14px” />

</h:form>

</ui:define>

<ui:define name=“content”>

<h:form>

<h:panelGrid columns=“3”>

<h:outputText value="#{msgs.razao}" />

<p:autoComplete value="#{comissao.pessoa}"

completeMethod="#{comissao.completaRazao}" var=“pessoa”

itemLabel="#{pessoa.razao}" itemValue="#{pessoa}"

converter=“pessoaConverter” />

<p:commandButton value=“procurar” update=":formtbl:tbl"

action="#{comissao.testaTabela}" />

</h:panelGrid>
<h:outputText value="Teste ajax" />
		<h:inputText value="#{comissao.teste2}" size="10" />

		<h:commandButton value="testa ajax">
			<f:ajax event="click" render=":formulario:message" execute="@form" />
		</h:commandButton>

		<p:commandButton value="testa ajax" update=":formulario:message" />


	</h:form>
	<h:form id="formulario">
		<h:outputText id="message" value="#{comissao.teste2}" />
	</h:form>
	<h:form id="formtbl">
		<p:dataTable id="tbl" value="#{comissao.lancamentos}" var="com"
			paginator="true" rows="10" style="font-size:14px">
			<f:facet name="header">
				<h:outputFormat value="Lançamentos pendentes" />
			</f:facet>
			<p:column>
				<f:facet name="header">
					<h:outputFormat value="Código" />
				</f:facet>
				<h:outputText id="cel1" value="#{com.lacodcli}" />
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputFormat value="Dt. Lanc." />
				</f:facet>
				<h:outputText value="#{com.ladatalanc}">
					<f:convertDateTime pattern="dd/MM/yyyy" />
				</h:outputText>
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputFormat value="Valor Boleta" />
				</f:facet>
				<h:outputText value="#{com.lavalorant}">
					<f:convertNumber type="currency" currencyCode="BRL" />
				</h:outputText>
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputFormat value="Venc. Real" />
				</f:facet>
				<h:outputText value="#{com.ladatavenc}">
					<f:convertDateTime pattern="dd/MM/yyyy" />
				</h:outputText>
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputFormat value="Venc. Prorrogado" />
				</f:facet>
				<h:outputText value="#{com.ladtanist}">
					<f:convertDateTime pattern="dd/MM/yyyy" />
				</h:outputText>
			</p:column>
			<p:column>
				<f:facet name="header">
					<h:outputFormat value="Data Pgto." />
				</f:facet>
				<h:outputText value="#{com.ladataquit}">
					<f:convertDateTime pattern="dd/MM/yyyy" />
				</h:outputText>
			</p:column>
		</p:dataTable>
	</h:form>

</ui:define>
<ui:define name="footer">
    Add your footer here or delete to use the default
</ui:define>

</ui:composition>

2 Respostas

natureza

Antes do drsmachado vim te fumar.

Por favor utilize a tag [.code] [./code]

Sem o .

Usa o atributo reRender que da certo.

Procura sobre o a4j dai vc só da refresh na determinada tabela.

B

obrigado, mas esse atributo não é utilizado com o primefaces. O update seria o rerender desse framework

Criado 28 de junho de 2011
Ultima resposta 28 de jun. de 2011
Respostas 2
Participantes 2