JSF - Inserir linha e recarregar <h:dataTable>

2 respostas
FabricioPJ

Olá a todos. Estou estudando sobre JSF, ainda estou aprendendo os conceitos. Durante um exemplo que estou fazendo, me deparei com esse problema: Como recarregar meu componente <h:dataTable> após eu pressionar um botão de adiciona um objeto Pessoa em uma lista? Vejam o código:

Meu Bean:

private List&lt;Pessoa&gt; lp;

        public List getLp(){
          lp = new ArrayList&lt;Pessoa&gt;();
          Pessoa p1 = new Pessoa();

          p1.setIdade(23);
          p1.setNome("Fabricio Jorge");

          lp.add(p1);
          return lp;
    }

        public String addPessoa(){
          Pessoa p = new Pessoa();
          p.setIdade(100);
          p.setNome("Teste");
          lp.add(p);
          System.out.println("Tamanho: " + lp.size());
          return "adicionado";
    }

Meu faces-config.xml:

&lt;navigation-rule&gt;
        &lt;from-view-id&gt;/pagInicial.jsp&lt;/from-view-id&gt;
        &lt;navigation-case&gt;
            &lt;from-outcome&gt;adicionado&lt;/from-outcome&gt;
            &lt;to-view-id&gt;/pagInicial.jsp&lt;/to-view-id&gt;
            &lt;redirect /&gt;
        &lt;/navigation-case&gt;
    &lt;/navigation-rule&gt;

    &lt;managed-bean&gt;
        &lt;managed-bean-name&gt;infoMaquina&lt;/managed-bean-name&gt;
        &lt;managed-bean-class&gt;br.com.Beans.BeanInfoMaquina&lt;/managed-bean-class&gt;
        &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;
    &lt;/managed-bean&gt;

Minha h:dataTable:

&lt;h:dataTable id="tabela" value="#{infoMaquina.lp}" var="nomes" border="2" cellspacing="2" rowClasses="linhaBranca, linhaAzul"&gt;

                        &lt;%--HEADER DA TABELA--%&gt;
                        &lt;f:facet name="header"&gt;
                            &lt;h:outputText value="Tabela de Nomes" /&gt;
                        &lt;/f:facet&gt;

                        &lt;h:column&gt;
                            &lt;f:facet name="header"&gt;
                                &lt;h:outputText value="Nome" /&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value="#{nomes.nome}" /&gt;
                        &lt;/h:column&gt;

                        &lt;h:column&gt;
                            &lt;f:facet name="header"&gt;
                                &lt;h:outputText value="Idade" /&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value="#{nomes.idade}" /&gt;
                        &lt;/h:column&gt;


                        &lt;%--FOOTER DA TABELA--%&gt;
                        &lt;f:facet name="footer"&gt;
                            &lt;h:outputText value="Valor do FOOTER" /&gt;
                        &lt;/f:facet&gt;
E meu botão que cria uma instância de Pessoa e a adiciona em uma lista, que povoa a minha <h:dataTable>:
&lt;a4j:commandButton value="Adicionar mais uma pessoa." action="#{infoMaquina.addPessoa}" reRender="tabela" /&gt;

Desculpem a quantidade exagerada de código, mas já procurei por isso, mas não consegui sanar minha dúvida.

Grato pela ajuda dos colegas.

2 Respostas

warley

Veja um exemplo pronto!
Vc precisa primeiro criar uma lista no seu Bean e colocar os métodos get e set da sua lista.

Veja a classe Bean:

package br.com.cesan.gerecipas.cargo.presentation;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;

import org.apache.log4j.Logger;
import javax.faces.model.ListDataModel;

import br.com.cesan.gerecipas.cargo.bo.CargoBO;
import br.com.cesan.gerecipas.cargo.model.to.CargoTO;

public class CargoBean {
	
	//informaçõe do logger
    private static Logger logger = Logger.getLogger(CargoBean.class);
    
    public CargoBean(){
    	context = FacesContext.getCurrentInstance();
    	bo = CargoBO.getInstance();
    }
    
    private int codigo;
    private String descricao;
    private String status;
    
    List&lt;CargoTO&gt; listaCargos = new ArrayList&lt;CargoTO&gt;();
    
    private DataModel model;
    
    CargoBO bo;
    
    FacesContext context = null;
    FacesMessage mensagem = null;
    ResourceBundle bundle = null;
    
    //----------------------------------------
    
	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public List&lt;CargoTO&gt; getListaCargos() {
		return listaCargos;
	}
	public void setListaCargos(List&lt;CargoTO&gt; listaCargos) {
		this.listaCargos = listaCargos;
	}
	public DataModel getModel() {
		return model;
	}
	public void setModel(DataModel model) {
		this.model = model;
	}
	
	//ACTIONS WITHOUT NAVEGATION ============================
	public void actionFindAll(ActionEvent event) {
		
		//Mostra a mensagem de envio com sucesso
		context = FacesContext.getCurrentInstance();
        bundle = ResourceBundle.getBundle("br.com.cesan.gerecipas.resources.ApplicationResources", context.getViewRoot().getLocale());
		
		try {
			
			this.listaCargos = bo.findAll();
			
			if (this.listaCargos.size() != 0) {
                String msg = bundle.getString("geral.informacao.registrosencontrados");
                MessageFormat format = new MessageFormat(msg);
                Object[] parametros = {this.listaCargos.size()};
                
                mensagem = new FacesMessage(format.format(parametros));
                mensagem.setSeverity(FacesMessage.SEVERITY_INFO);
                context.addMessage (null, mensagem);
            } else {
                String msg = bundle.getString("geral.informacao.registronaoencontrados");
                mensagem = new FacesMessage(msg);
                mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
                context.addMessage (null, mensagem);
            }
			
			model = null;
	        model = new ListDataModel(this.listaCargos);
			
		} catch (Exception e) {
			
			if (logger.isDebugEnabled()) {
	            logger.error("Class CargoBean method: [actionFindAll] Erro: "+ e.getMessage());
	        }        
	        FacesMessage mensagem = new FacesMessage( e.getMessage());
	        mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
	        context.addMessage (null, mensagem);			
		}
		
	}
	
	public void actionNovo(ActionEvent event){
		
		//Limpa os campos da tela
		codigo = 0;
	    descricao = null;
	    status  = null;
	}
	
	public void actionSalvar(ActionEvent event) {
		
		//Mostra a mensagem de envio com sucesso
		context = FacesContext.getCurrentInstance();
        bundle = ResourceBundle.getBundle("br.com.cesan.gerecipas.resources.ApplicationResources", context.getViewRoot().getLocale());
		
        if(this.descricao == null || this.descricao.trim().equals("")){
        	String msg = bundle.getString("geral.message.erro.descricao");
            mensagem = new FacesMessage(msg);
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage (null, mensagem);
            
            return;
        }
        
		CargoTO to =  new CargoTO();
		to.setDescricao(this.descricao);
		to.setStatus(this.status);
		
		try {
			
			if(this.codigo == 0){
			
				boolean valorSalvo = bo.salvar(to);
				
				if(valorSalvo){
	                String msg = bundle.getString("geral.message.salvosucesso");
	                mensagem = new FacesMessage(msg);
	                mensagem.setSeverity(FacesMessage.SEVERITY_INFO);
	                context.addMessage (null, mensagem);
	                
	            }else{
	            	String msg = bundle.getString("geral.message.salvoerro");
	            	mensagem = new FacesMessage(msg);
	            	mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
	            	context.addMessage (null, mensagem);
	            }
			
			}else{
				
				to.setCodigo(this.codigo);
				
				boolean valorSalvo = bo.alterar(to);
				
				if(valorSalvo){
	                String msg = bundle.getString("geral.message.alteradosucesso");
	                mensagem = new FacesMessage(msg);
	                mensagem.setSeverity(FacesMessage.SEVERITY_INFO);
	                context.addMessage (null, mensagem);
	                
	            }				
			}
			
			//Atualiza a lista de resultados
			this.listaCargos = bo.findAll();
			model = null;
	        model = new ListDataModel(this.listaCargos);
			
		}catch (Exception e) {
		
			if (logger.isDebugEnabled()) {
	            logger.error("Class CargoBean method: [actionSalvar] Erro: "+ e.getMessage());
	        }        
	        FacesMessage mensagem = new FacesMessage( e.getMessage());
	        mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
	        context.addMessage (null, mensagem);
		} 
		
	}
	
	public void actionSelecionarAlterar(ActionEvent event){
        
		CargoTO to = (CargoTO)model.getRowData();
        
        this.setCodigo(to.getCodigo());
        this.setDescricao(to.getDescricao());
        this.setStatus(to.getStatus());
    }
	        
	public void actionExcluir(ActionEvent event) {
		
		//Mostra a mensagem de envio com sucesso
		context = FacesContext.getCurrentInstance();
        bundle = ResourceBundle.getBundle("br.com.cesan.gerecipas.resources.ApplicationResources", context.getViewRoot().getLocale());
				
        CargoTO to = (CargoTO)model.getRowData();
        
        this.setCodigo(to.getCodigo());
        this.setDescricao(to.getDescricao());
        this.setStatus(to.getStatus());
		
		try {
			
			boolean valorExcluir = bo.excluir(to.getCodigo());
			
			if(valorExcluir){
                String msg = bundle.getString("geral.message.excluidasucesso");
                mensagem = new FacesMessage(msg);
                mensagem.setSeverity(FacesMessage.SEVERITY_INFO);
                context.addMessage (null, mensagem);
                
            }else{
            	String msg = bundle.getString("geral.message.salvoerro");
            	mensagem = new FacesMessage(msg);
            	mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            	context.addMessage (null, mensagem);
            }
			
			//Atualiza a lista de resultados
			this.listaCargos = bo.findAll();
			model = null;
	        model = new ListDataModel(this.listaCargos);
	        
	        //Limpa os campos da tela
	        codigo = 0;
		    descricao = null;
		    status  = null;
			
		}catch (Exception e) {
		
			if (logger.isDebugEnabled()) {
	            logger.error("Class CargoBean method: [actionSalvar] Erro: "+ e.getMessage());
	        }        
	        FacesMessage mensagem = new FacesMessage( e.getMessage());
	        mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
	        context.addMessage (null, mensagem);
		} 		
	}
	
	private void limparCampos(){
		
		codigo = 0;
	    descricao = null;
	    status  = null;
	    		
	}
	
	//ACTIONS WITH NAVEGATION ===============================
	public String actionOutComeCargo(){
        return null;
    }
	
	public String actionIrGestorCargo(){
    	
    	//Limpa os campos da tela
    	this.limparCampos();
    	
    	return "principalGestor_gestorCargo";
    }
	
}

Veja a página

&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;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:c="http://java.sun.com/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:a4j="http://richfaces.org/a4j"&gt;
	
	&lt;ui:composition template="/templates/templateGestor.xhtml"&gt;
	
		&lt;ui:define name="conteudo"&gt;
			
			&lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="75%"&gt;                
				&lt;tr&gt;
					&lt;td height="0"&gt;
						<img  /> 
                    	&lt;!-- Título da tela --&gt;
                      	&lt;strong&gt;&lt;h:outputLabel value="#{i18n['geral.titulo.cipa']}"/&gt;&lt;/strong&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
			
			&lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="76%"&gt;
				&lt;tr&gt; 
					&lt;td width="14"&gt;<img       />&lt;/td&gt;
					&lt;td width="688" height="4" background="${ctx}/imagens/topo_janela_meio.gif"&gt;&lt;/td&gt;
					&lt;td width="14"&gt;<img       />&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt; 
					&lt;td height="40" background="${ctx}/imagens/meio_janela_esq.gif"&gt;&lt;/td&gt;
					&lt;td align="right"&gt;
						
						&lt;a4j:outputPanel id="botoes" ajaxRendered="true"&gt;
						
							&lt;!-- botao novo --&gt;
	                    	&lt;a4j:commandLink id="btnNovo"
	                       		action="#{controleCipa.actionOutComeCipa}"
					    		actionListener="#{controleCipa.actionNovo}"
					    		oncomplete="limparCamposCipa();"
					    		reRender="msg,upload,estabelecimento,nomeTecnico,botoes,btnSalvar,btnAlterar,btnExcluir"
	                  			&gt;
	          					&lt;h:graphicImage value="/imagens/icone/ico_novo.gif" alt="Novo" styleClass="noBorder"/&gt;
	          				&lt;/a4j:commandLink&gt;
	                    			
	                    	&lt;!-- botao salvar --&gt;
	                    	&lt;a4j:commandLink id="btnSalvar"
	                       		action="#{controleCipa.actionOutComeCipa}"
					    		actionListener="#{controleCipa.actionSalvar}"
					    		reRender="msg,panelLista,dataresultados,upload,codigo,periodogestao,estabelecimento,agrupamentoCargo,descricao,email,status,codigoTecnico,matriculaTecnico,nomeTecnico"
	                  			rendered="#{controleCipa.mostrarBotoes}"
	                  			&gt;
	          					&lt;h:graphicImage value="/imagens/icone/ico_salvar.gif" alt="Salvar" styleClass="noBorder"/&gt;
	          				&lt;/a4j:commandLink&gt;
          				
          				&lt;/a4j:outputPanel&gt;
						
					&lt;/td&gt;
					&lt;td background="${ctx}/imagens/meio_janela_dir.gif"&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt; 
					&lt;td height="40" background="${ctx}/imagens/meio_janela_esq.gif"&gt;&lt;/td&gt;
					&lt;td&gt;
						
						&lt;table width="70%" border="0" cellspacing="1" cellpadding="1" align="center"&gt;
                        	
                        	&lt;tr&gt; 
                          		&lt;td&gt;&lt;h:outputLabel value="#{i18n['geral.periodogestao']}:"/&gt;&lt;/td&gt;
                          		&lt;td&gt;
                          			&lt;h:inputHidden id="codigo" value="#{controleCipa.codigoCipa}" /&gt;
                          			&lt;h:selectOneMenu id="periodogestao" value="#{controleCipa.codigoPeriodoGestao}" style="width:314px;"
                          				valueChangeListener="#{controleCipa.actionMontarSelectEstabelecimento}" immediate="true"   &gt;
                          				
					                    &lt;f:selectItem itemLabel="Selecione..." itemValue="-1" /&gt;					                    
					                    &lt;f:selectItems value="#{controleCipa.listaPeriodoGestao}" /&gt;
					                    
					                    &lt;a4j:support event="onchange"  reRender="msg,estabelecimento,panelLista,dataresultados,botoes,btnSalvar,btnAlterar,btnExcluir" /&gt;          
					                &lt;/h:selectOneMenu&gt;
                          		&lt;/td&gt;
                        	&lt;/tr&gt;
                        	&lt;tr&gt; 
                          		&lt;td&gt;&lt;h:outputLabel value="#{i18n['geral.estabelecimento']}:"/&gt;&lt;/td&gt;
                          		&lt;td&gt;
                          			&lt;h:selectOneMenu id="estabelecimento" value="#{controleCipa.codigoEstabelecimento}" style="width:314px;" &gt;
					                    &lt;f:selectItems value="#{controleCipa.listaEstabelecimento}" /&gt;          
					                &lt;/h:selectOneMenu&gt;
                          		&lt;/td&gt;
                        	&lt;/tr&gt;
                        	&lt;tr&gt; 
                          		&lt;td&gt;&lt;h:outputLabel value="#{i18n['geral.agrupamentocargos']}:"/&gt;&lt;/td&gt;
                          		&lt;td&gt;
                          			&lt;h:selectOneMenu id="agrupamentoCargo" value="#{controleCipa.codigoAgrupamentoCargo}" style="width:314px;" &gt;
					                    &lt;f:selectItems value="#{controleCipa.listaAgrupamentoCargo}" /&gt;          
					                &lt;/h:selectOneMenu&gt;
                          		&lt;/td&gt;
                        	&lt;/tr&gt;
                        	&lt;tr&gt; 
                          		&lt;td&gt;&lt;h:outputLabel value="#{i18n['geral.descricao']}:"/&gt;&lt;/td&gt;
                          		&lt;td&gt;
                          			&lt;h:inputText id="descricao" value="#{controleCipa.descricao}" maxlength="50" size="50" /&gt;
                          		&lt;/td&gt;
                        	&lt;/tr&gt;
                        	&lt;tr&gt; 
                          		&lt;td&gt;&lt;h:outputLabel value="#{i18n['geral.email']}:"/&gt;&lt;/td&gt;
                          		&lt;td&gt;
                          			&lt;h:inputText id="email" value="#{controleCipa.email}" maxlength="50" size="50" /&gt;
                          		&lt;/td&gt;
                        	&lt;/tr&gt;                        	
                        	&lt;tr&gt; 
                          		&lt;td&gt;&lt;h:outputLabel value="#{i18n['geral.status']}:"/&gt;&lt;/td&gt;
                          		&lt;td&gt; 
                          			&lt;h:selectOneMenu id="status"  value="#{controleCipa.status}" style="width:104px;"&gt;
	                            		&lt;f:selectItem itemLabel="Ativo" itemValue="A" /&gt;
	                            		&lt;f:selectItem itemLabel="Inativo" itemValue="I"/&gt;
	                        		&lt;/h:selectOneMenu&gt; 
                            	&lt;/td&gt;
                        	&lt;/tr&gt;
                        	&lt;tr&gt; 
                          		&lt;td&gt;&lt;h:outputLabel value="#{i18n['geral.tecnico']}:"/&gt;&lt;/td&gt;
                          		&lt;td&gt;
                          		
                          			&lt;table width="100%" border="0" cellspacing="1" cellpadding="0"&gt;
									  &lt;tr&gt;
									    &lt;td width="5%"&gt;
									    	&lt;h:inputHidden id="codigoTecnico" value="#{controleCipa.codigoTecnico}" /&gt;
                          					&lt;h:inputText id="matriculaTecnico" value="#{controleCipa.matriculaTecnico}" maxlength="10" size="10" onkeypress="validaNumero(event, this)"/&gt;
									    &lt;/td&gt;
									    &lt;td width="5%"&gt;
									    	&lt;a4j:commandButton id="btLocalizarTitular" value="..."
                          						actionListener="#{controleCipa.actionFindTecnicoTrabalho}"
                          						reRender="msg,codigoTecnico,matriculaTecnico,nomeTecnico" /&gt;
									    &lt;/td&gt;
									    &lt;td width="90%"&gt;
									    	<b>
								    			&lt;h:outputText id="nomeTecnico" value="#{controleCipa.nomeTecnico}" /&gt;
								    		</b>
									    &lt;/td&gt;
									  &lt;/tr&gt;
									&lt;/table&gt;
                          			                          			
                          		&lt;/td&gt;
                        	&lt;/tr&gt;
                        	&lt;tr&gt; 
                          		&lt;td valign="top"&gt;
                          			&lt;h:outputLabel value="#{i18n['geral.resolucao']}:"/&gt;
                          		&lt;/td&gt;
                          		&lt;td&gt; 
                          			&lt;rich:fileUpload
                          				fileUploadListener="#{controleCipa.listener}"
                						maxFilesQuantity="#{controleCipa.uploadsAvailable}"
						                id="upload"
						                immediateUpload="true"
						                acceptedTypes="doc,docx,xls,xlsx,pdf"
						                listHeight="55px"
										listWidth="320px"
										addControlLabel="Selecionar"
										clearAllControlLabel="Limpar Todos"
										uploadControlLabel="Enviar"
										progressLabel="Enviando"
										doneLabel="Enviado"
										stopControlLabel="Parar"
										clearControlLabel="Limpar"
                          				&gt;
                          				
                          				&lt;a4j:support event="onclear" reRender="upload" actionListener="#{controleCipa.clearUploadData}"/&gt; 
                          				
                          				&lt;f:facet name="label"&gt;   
                           					&lt;h:outputText value="{_KB}KB para {KB}KB uploaded --- {mm}:{ss}" /&gt;   
                       					&lt;/f:facet&gt;
                          				     			
                          			&lt;/rich:fileUpload&gt;
                            	&lt;/td&gt;
                        	&lt;/tr&gt;
                        	&lt;tr&gt; 
								&lt;td align="center" height="20px" colspan="2"&gt;
								    &nbsp;
								&lt;/td&gt;
							&lt;/tr&gt;							
                        &lt;/table&gt;
						
					&lt;/td&gt;
					&lt;td background="${ctx}/imagens/meio_janela_dir.gif"&gt;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt; 
	                &lt;td background="${ctx}/imagens/meio_janela_esq.gif"&gt;&nbsp;&lt;/td&gt;
	                &lt;td&gt;
	                	<br></br>
	                		&lt;a4j:outputPanel id="msg" ajaxRendered="true"&gt;
	                        	&lt;table class="tabelaMensagem" cellpadding="0" cellspacing="0" width="100%" height="1px"&gt;
									&lt;tr&gt;
										&lt;td class="tabelaMensagem_Column_left_2"&gt;
							
											&lt;!-- mensagens de erro --&gt;
	                          				&lt;rich:messages globalOnly="true"
	                                  			infoClass="mensagem_Info"
	                                  			errorClass="mensagem_Erro"/&gt;
										&lt;/td&gt;
									&lt;/tr&gt;
								&lt;/table&gt;                                		
	                        &lt;/a4j:outputPanel&gt;	                    
	                &lt;/td&gt;
	                &lt;td background="${ctx}/imagens/meio_janela_dir.gif"&gt;&nbsp;&lt;/td&gt;
	            &lt;/tr&gt;
				&lt;tr&gt; 
					&lt;td&gt;<img       />&lt;/td&gt;
					&lt;td height="5" background="${ctx}/imagens/down_janela_meio.gif"&gt;&lt;/td&gt;
					&lt;td&gt;<img       />&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
			
		&lt;/ui:define&gt;
		
		&lt;ui:define name="tabela"&gt;
		
			&lt;a4j:outputPanel id="panelLista" ajaxRendered="true"&gt;
				
				&lt;rich:dataTable id="dataresultados" value="#{controleCipa.model}" var="cipas"                                    
                   	border="0" cellpadding="1" cellspacing="1" align="center" width="76%" 
                   	rowClasses="tabelaCinza_Row1,tabelaCinza_Row2"
                   	columnClasses="tabelaCinza_Column_left, tabelaCinza_Column_center, tabelaCinza_Column_center"
                   	rendered="#{not empty controleCipa.listaCipas}"
                   &gt;
                   
					&lt;f:facet name="header"&gt;
		           		&lt;rich:columnGroup&gt;
		               		&lt;rich:column width="30%"&gt;
		                        &lt;h:outputText value="Descrição" /&gt;
		                    &lt;/rich:column&gt;
		                    &lt;rich:column width="30%"&gt;
		                        &lt;h:outputText value="Email" /&gt;
		                    &lt;/rich:column&gt;
		                    &lt;rich:column width="20%"&gt;
		                        &lt;h:outputText value="Resolução" /&gt;
		                    &lt;/rich:column&gt;
		                    &lt;rich:column width="10%"&gt;
		                        &lt;h:outputText value="Status" /&gt;
		                    &lt;/rich:column&gt;
		                    &lt;rich:column width="10%"&gt;
		                        &lt;h:outputText value=" &nbsp; "/&gt;
		                    &lt;/rich:column&gt;
		               &lt;/rich:columnGroup&gt;
		            &lt;/f:facet&gt;
		            
		            &lt;rich:column&gt;
		            	&lt;h:outputText value="#{cipas.descricao}"/&gt;
		            &lt;/rich:column&gt;
		            &lt;rich:column&gt;
		            	&lt;h:outputText value="#{cipas.email}"/&gt;
		            &lt;/rich:column&gt;
		            &lt;rich:column&gt;
		            	&lt;a4j:commandLink value="#{cipas.resolucao}"
		            		onclick="abrirArquivoDocumento('#{cipas.resolucao}',1)" /&gt;
		            &lt;/rich:column&gt;
		            &lt;rich:column style="text-align:center;"&gt;
		            	&lt;h:outputText value="#{cipas.status eq 'A'? 'Ativo':'Inativo'}"/&gt;
		            &lt;/rich:column&gt;
		            &lt;rich:column style="text-align:center;"&gt;
		            	
		            	&lt;a4j:commandLink id="btnAlterar"
	                       	action="#{controleCipa.actionOutComeCipa}"
	                       	actionListener="#{controleCipa.actionSelecionarAlterar}"
			    			reRender="msg,codigo,periodogestao,estabelecimento,agrupamentoCargo,descricao,email,status,codigoTecnico,matriculaTecnico,nomeTecnico"
			    			rendered="#{controleCipa.mostrarBotoes}"
	                     &gt;
		            		&lt;h:graphicImage value="/imagens/icone/ico_alterar.gif" alt="Alterar" styleClass="noBorder"/&gt;
		            	&lt;/a4j:commandLink&gt;
		            	
		            	&lt;h:outputText value=" &nbsp; "/&gt;
		            	
		            	&lt;a4j:commandLink id="btnExcluir"
	                       	action="#{controleCipa.actionOutComeCipa}"
	                       	actionListener="#{controleCipa.actionExcluir}"
	                       	onclick="if(!excluir()){return;}"
	                       	oncomplete="limparCamposCipa();"
			    			reRender="msg,dataresultados,panelLista,upload,estabelecimento,nomeTecnico"
			    			rendered="#{controleCipa.mostrarBotoes}"
	                     &gt;
		            		&lt;h:graphicImage value="/imagens/icone/ico_excluir.gif" alt="Excluir" styleClass="noBorder"/&gt;
		            	&lt;/a4j:commandLink&gt;
		            	
		            &lt;/rich:column&gt;
		                               
                &lt;/rich:dataTable&gt;
                &lt;rich:datascroller for="dataresultados" 
                      	maxPages="10" 
                      	id="scrol_1"
                      	reRender="dataresultados"
                      	rendered="#{not empty controleCargo.listaCargos}"
                  	/&gt;
				
			&lt;/a4j:outputPanel&gt;
		
		&lt;/ui:define&gt;
	
	&lt;/ui:composition&gt;

&lt;/html&gt;
FabricioPJ

Caro warley, com seus exemplos, consegui resolver meu problema.

Muito obrigado…

Criado 8 de abril de 2010
Ultima resposta 11 de abr. de 2010
Respostas 2
Participantes 2