JSF - Inserir linha e recarregar <h:dataTable>

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:

[code] private List<Pessoa> 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";
}[/code]

Meu faces-config.xml:

[code] <navigation-rule>
<from-view-id>/pagInicial.jsp</from-view-id>
<navigation-case>
<from-outcome>adicionado</from-outcome>
<to-view-id>/pagInicial.jsp</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>

&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;[/code]

Minha h:dataTable:

[code] <h:dataTable id=“tabela” value="#{infoMaquina.lp}" var=“nomes” border=“2” cellspacing=“2” rowClasses=“linhaBranca, linhaAzul”>

                    &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;[/code]

E meu botão que cria uma instância de Pessoa e a adiciona em uma lista, que povoa a minha <h:dataTable>:

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.

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(&quot;br.com.cesan.gerecipas.resources.ApplicationResources&quot;, context.getViewRoot().getLocale());
		
		try {
			
			this.listaCargos = bo.findAll();
			
			if (this.listaCargos.size() != 0) {
                String msg = bundle.getString(&quot;geral.informacao.registrosencontrados&quot;);
                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(&quot;geral.informacao.registronaoencontrados&quot;);
                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(&quot;Class CargoBean method: [actionFindAll] Erro: &quot;+ 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(&quot;br.com.cesan.gerecipas.resources.ApplicationResources&quot;, context.getViewRoot().getLocale());
		
        if(this.descricao == null || this.descricao.trim().equals(&quot;&quot;)){
        	String msg = bundle.getString(&quot;geral.message.erro.descricao&quot;);
            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(&quot;geral.message.salvosucesso&quot;);
	                mensagem = new FacesMessage(msg);
	                mensagem.setSeverity(FacesMessage.SEVERITY_INFO);
	                context.addMessage (null, mensagem);
	                
	            }else{
	            	String msg = bundle.getString(&quot;geral.message.salvoerro&quot;);
	            	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(&quot;geral.message.alteradosucesso&quot;);
	                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(&quot;Class CargoBean method: [actionSalvar] Erro: &quot;+ 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(&quot;br.com.cesan.gerecipas.resources.ApplicationResources&quot;, 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(&quot;geral.message.excluidasucesso&quot;);
                mensagem = new FacesMessage(msg);
                mensagem.setSeverity(FacesMessage.SEVERITY_INFO);
                context.addMessage (null, mensagem);
                
            }else{
            	String msg = bundle.getString(&quot;geral.message.salvoerro&quot;);
            	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(&quot;Class CargoBean method: [actionSalvar] Erro: &quot;+ 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 &quot;principalGestor_gestorCargo&quot;;
    }
	
}

Veja a página

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&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;

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

Muito obrigado…