Atualizar somente um panel na tela

7 respostas
giselezr

Bom dia galera

Estou tentando atualizar apenas um panel da tela e não estou conseguindo.
A situação é a seguinte, estou querendo atualizar um determinado panel quando o usuário clicar em um botão, dessa forma a requisição iria para o MB entra no metodo atualiza alguns campos como status, data, etc atualiza a tela e depois continua executando o método.
Tentei dessa forma, mas não vai…

este é o panel que quero atualizar, ele esta dentro de um form

<p:panelGrid columns="2" style="width:600px" id="panelDados">
						<h:outputText id="status_name" value="Status:" />
						<p:inputText id="status" value="#{BOExtractor.status}" size="20"
							readonly="true"  update="true"/>
						<h:outputText value="Data de inicialização:" />
						<p:inputText id="data" value="#{BOExtractor.dataTela}" size="20"
							readonly="true" update="true"/>
						<h:outputText value="Tempo de importação:" />
						<p:inputText id="tempoImportacao"
							value="#{BOExtractor.tempoImportacao}" size="20" readonly="true" update="true"/>

					</p:panelGrid>

botão

<p:panel style="border:0">
					<p:commandButton value="Importar" action="#{BOExtractor.importar}">
						
					</p:commandButton>
				</p:panel>

metodo:

public void atualizaDadosTela(){
		setStatus("Iniciado");
		setDataTela(new SimpleDateFormat("dd/MM/yyy HH:mm").format(new Date()));
		setData(new Date());
		setTempoImportacao(tempoImportacao);
	
		RequestContext.getCurrentInstance().update("panelDados");
//		RequestContext.getCurrentInstance().update("principal:panelDados"); 
//		FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(":panelDados:status");  
	}

o metodo importar chama o atualizaDadosTela().

Alguem pode me ajudar?

7 Respostas

Rodrigo_Sasaki

Seu método está sendo invocado corretamente?

Já tentou colocar o id completo do componente? Ex: :form:campo

giselezr

sim, esta sendo chamado certinho, verifiquei com o debug.
Já tentei fazer também, ta na segunda linha do metodo atualizaDadosTela

Rodrigo_Sasaki

Na linha comentada faltaram os dois pontos antes do nome do form

giselezr

tentei agora:

RequestContext.getCurrentInstance().update(":principal:panelDados");

tb não foi… =/

Rodrigo_Sasaki

Fiz uns testes aqui, e eu tive que setar o nome exato do componente HTML gerado pelo PrimeFaces, então ficou assim:<h:form id="mainForm"> <p:panelGrid id="panel" columns="2"> <p:inputText id="input" value="#{myManagedBean.valor}" readonly="true" /> <p:commandButton value="Setar Valor" action="#{myManagedBean.setarValor()}" /> </p:panelGrid> </h:form>E o método assim:public void setarValor() { valor = "teste"; RequestContext ctx = RequestContext.getCurrentInstance(); ctx.update("mainForm:panel"); }Funcionou normalmente.

giselezr

nao funcionou…
tu pode postar o codigo inteiro por favor?

Rodrigo_Sasaki
ManagedBean
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

@ManagedBean
@ViewScoped
public class MyManagedBean {

	private String valor;

	public void setarValor() {
		valor = "teste";
		RequestContext ctx = RequestContext.getCurrentInstance();
		ctx.update("mainForm:panel");
	}

	public String getValor() {
		return valor;
	}

	public void setValor(String valor) {
		this.valor = valor;
	}

}
xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">
<h:head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta>
	<h:outputStylesheet library="css" name="style.css" />
	<title>Page</title>
</h:head>
<h:body>
<h:form id="mainForm">
	<p:panelGrid id="panel" columns="2">
		<p:inputText id="input" value="#{myManagedBean.valor}"
			readonly="true" />
		<p:commandButton value="Setar Valor"
			action="#{myManagedBean.setarValor()}" />
	</p:panelGrid>
</h:form>
</h:body>
</html>
Criado 25 de junho de 2013
Ultima resposta 25 de jun. de 2013
Respostas 7
Participantes 2