Como atualizar a pagina principal a partir de um popup com jsf e javascript

Como atualizar a pagina principal a partir de um popup.

Bom dia, Pessoal!

Estou com um problema aqui, trabalho com facelets e minhas paginas sao xhtml e estou usando umas funçoes
javascript para abrir um popup que contera uma tabela e onde os elementos que sao algumas informaçoes alem
    de botoes que quando clicados vao para uma outra tabela na pagina principal. Acontece que eu ja consigo abrir
o popup com a tabela e os elementos, mas quando eu clico nos botoes a tabela da pagina principal nao é
atualizada automaticamente e eu ja sei que a lista(ou array) da tabela principal ja foi preenchida mas
a pagina principal nao é atualizada a nao ser que eu feche o popup e abra-o de novo a partir da janela
principal quando eu clico no botao de nome exibir, ai a tabela da pagina principal é atualizada com os dados
obtidos a partir do popup.
Em outras palavaras como atualizo,ou seja, faço um reloader da pagina principal a partir do popup e exiba a
tabela preenchida na pagina principal.Abaixo segue o codigo das minhas paginas.


<<<<<<<<<<<<<<<<<<<<<<< pagina principal= edit.xhtml >>>>>>>>>>>>>>>>>>>>>>>>>

<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:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">

<ui:composition template="/WEB-INF/template/refeicao_template.xhtml">
<ui:define name=“titulo”>#{prompt.anamnese}</ui:define>
<ui:define name=“descricao”>#{prompt.anamnese_cadastro}</ui:define>

<ui:define name="corpo">
	<script language="Javascript" type="Text/Javascript">
    novaJanela = null;
    function abrirTabelaDeAlimentos() 
    {  
       leftPos = (screen.width-640)/2; 
       novaJanela = window.open("#{facesContext.externalContext.request.contextPath}/faces/refeicao/tabelaDeAlimentos.xhtml","novaJan",
		                        "width=640,height=500,left="+leftPos+",top=150,scrollbars=yes");
	   //novaJanela.focus();
    }
	</script>
	<h:form id="formularioTabela">
		<center>
		<h:column>
		  <b>
			<h:outputText value=" Anamnese para o cliente: #{refeicaoActions.usuarioCorrente.nome}" />
		  </b>
		</h:column>
		</center>
		<br />
		<br />
		<a4j:outputPanel id="painel" keepTransient="true">
		<rich:panel style="width:99%">
			<rich:column>
				<h:commandButton id="botao" onclick="abrirTabelaDeAlimentos()"
										    value="Exibir Lista de Alimentos:" />
	        </rich:column>
	    <br />
	    <br />
	    <rich:dataTable id="lista" rows="7" align="center"
						value="#{refeicaoActions.listaDeAlimentosCafe}" var="alimentoCafe" >
		<f:facet name="header">
			<rich:columnGroup>
				<rich:column>
					<h:outputText value="#{prompt.alimento_nome}" />
				</rich:column>
			</rich:columnGroup>
		</f:facet>
		<f:facet name="footer">
			#{prompt.alimento_totaDeAlimentos} = #{refeicaoActions.listaDeAlimentosCafe.rowCount}
		</f:facet>
		<rich:column id="coluna">
			<h:outputText id="nome" value="#{alimentoCafe.nome}" />
		</rich:column>
		</rich:dataTable>
		<rich:datascroller align="center" for="lista" maxPages="10" id="scroller"/>	
		<br />
		</rich:panel>
		</a4j:outputPanel>
	</h:form>

	<a4j:keepAlive beanName="refeicaoActions" />

</ui:define>

</ui:composition>

	<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Popup: tabelaDeAlimentos.xhtml >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

	
	<?xml version='1.0' encoding='ISO-8859-1' ?>
		<ui:define name="corpo">
			<script language="Javascript" type="Text/Javascript">
			 antigaJanela = null;
			 function atualizaJanelaEdit() 
		      {  
			TEORICAMENTE, ESTA FUNCAO DEVERIA ATUALIZAR A PAGINA PRINCIPAL DE NOME: edit.xhtml					

			      window.opener.document.forms['formularioTabela'];// .elements['formularioTabela:lista'];		           
			      //opener.document.forms['formularioTabela'].elements['formularioTabela:tipo'].value = "aaa";//.value = tipo + ' ' + logradouro;
			      //var focusControl = opener.document.forms['formularioTabela'].elements['formularioTabela:lista'];		           
			      //opener.document.forms['formularioTabela'].elements['formularioTabela:lista:coluna:nome'].value = "pepe";
			      //focusControl.focus();
			      //window.close();
			      // return false;
			      // return true;
		      }
			</script>      
			<h:form id="formularioTable" >
				<br/>
				   <div class="feature" align="center" >
					<rich:dataTable width="400px" id="list" rows="20"
									align="center"
			                        value="#{refeicaoActions.listaDeAlimentos}"
			                        var="alimento">
			
			            <f:facet name="header">
			                <rich:columnGroup>		            
			                    <h:column>
			                        <h:outputText value="Nome" />
			                    </h:column>
			                    <h:column>
			                        <h:outputText value="Tipo" />
			                    </h:column>
			                    <h:column>
			                        <h:outputText value="Adicionar" />
			                    </h:column>
			                </rich:columnGroup>
			            </f:facet>
			
			            <h:column>
			                <h:outputText id="nome" value="#{alimento.nome}" />
			            </h:column>
			            <h:column>
			                <h:outputText id="tipo" value="#{alimento.tipoAlimento.tipoAlimento}" />
			            </h:column>
			            <h:column>
			                <h:commandButton id="botao" value="adicionar" action="#{refeicaoActions.adicionarNaLista}" onclick="atualizaJanelaEdit()"/>
			            </h:column>
			        </rich:dataTable>
			        <rich:datascroller align="center" for="list" maxPages="10" id="scroller"/>		        	   
				</div>
				<br/>
			 </h:form>
			 
			 <a4j:keepAlive beanName="refeicaoActions" />
			 
		</ui:define>

	</ui:composition>
</body>

Com licença marquedante, sei que o post já é antigo, mas estou com o memso problema que vc e nao acho nada relacionado a isso na net!!! Poderia me dizer se conseguiu resolver este problema e se sim, qual a soluçao que vc encontrou??? Obrigado, abraço!

Meu camarda, a soluçao segue abaixo. Eu utilizei javascript.

<ui:composition template=“simulador_anamnese_template.xhtml”>
<ui:define name=“titulo”>#{prompt.simulador}</ui:define>
<ui:define name=“descricao”>#{prompt.simulador_de_anamnese}</ui:define>

<ui:define name="corpo">
	<script language="Javascript" type="Text/Javascript">
    novaJanela = null;
    exibir=0;
    function abrirTabelaDeAlimentos() //Esta funcao chamara uma popup onde dentro dele faço uma busca pelo(s) alimentos que quero
    {  
       leftPos = (screen.width-640)/2; 
       novaJanela = window.open("#{facesContext.externalContext.request.contextPath}/faces/simulador/anamnese/buscarAlimentoMedidaCaseira.xhtml","novaJan",
		                        "width=640,height=500,left="+leftPos+",top=150,scrollbars=yes");
	   novaJanela.focus();
    }
    
    function informacoesSobreSimulador() 
    {  
       leftPos = (screen.width-640)/2; 
       novaJanela = window.open("#{facesContext.externalContext.request.contextPath}/faces/simulador/informacoesSobreSimulador.xhtml","novaJan",
		                        "width=640,height=500,left="+leftPos+",top=150,scrollbars=yes");
	   novaJanela.focus();
    }
    
    function mensagemDoSimulador() 
    {  
		if(exibir == 0){
           alert("#{prompt.mensagemDoSimulador1}"+"\n"+
                 "#{prompt.mensagemDoSimulador2}"+"\n"+
                 "#{prompt.mensagemDoSimulador3}");
		   exibir++;				
		}
        
    }
	</script>
	<body>
	<h:form id="formularioExibirListaDeAlimentosDoSimulador" >
		<center>
		<h:column>
		  <b>
			<h:outputText value="#{prompt.simulador_de_anamnese}" />
		  </b>
		</h:column>
		</center>
		<br />
		<br />
		<a4j:outputPanel id="painel" keepTransient="false">
		<rich:panel id="richpanel" style="width:99%">
	    <br />
		<rich:datascroller id="scroller"
						   for="lista"
						   maxPages="20" 	
						   align="center"
						   immediate="true" />
						   
	    <rich:dataTable id="lista"
                                                         id="lista"
	    	             rows="10"
	    	             align="center"  
		             value="#{seuActions.sualistaDeXXX}"
		             var="objetos" >

                                </rich:dataTable>

               			</rich:panel>
		</a4j:outputPanel>
	</h:form>
	</body>
	<a4j:keepAlive beanName="simuladorAnamneseActions" />

</ui:define>

</ui:composition>

//////////////////////////////////////////////////////////////////////////////////////

Esta pagina é o popup que é chamado pela funcao javascript que possui um campo onde entro com o nome do alimento que quero inserir na pagina prinpal.

		<ui:define name="corpo">
				
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
				
			<div id="pageName">
				<h2><h:outputText value="Pesquisar Alimento"/></h2>
			</div>	
				
			<h:form id="formularioPesquisa" >
				<br/>
				<br/>
				<div id="pesquisa">
					  <center>
					        <h:panelGrid columns="2">
								<h:panelGroup>
									<b>	<h:outputText value="Nome do alimento"/>: </b>
								</h:panelGroup>
								
								<h:panelGroup>
									<h:inputText id="nome" value="#{simuladorAnamneseActions.nomeDoAlimento}" maxlength="45" size="50" required="true" />
								</h:panelGroup>
							</h:panelGrid>
							<h:messages globalOnly="false" style="color:red" />
					 </center>			
				</div>
				<br/>
			    <center>
					<h:panelGrid>
				       	<h:commandButton value="Pesquisar" action="#{simuladorAnamneseActions.pesquisarAlimentoMedidaCaseira}" styleClass="botao" />
				    </h:panelGrid>
			    </center>	
			</h:form>
							 
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>
			<br/>

		</ui:define>
	</ui:composition>
</body>

Obs.: o metodo pesquisarAlimentoMedidaCaseira busca no banco de dados os alimento(s) que quero jogar na tela principal
Exemplo: digitei banana entao aparecera banana-prata, bananada, vitamina de banana, etc…

/////////////////////////////////////////////////////////////////////////

Esta pagina abaixo é o resultado da busca com os alimentos que estava pesquisando e cada alimento possui um botao adicionar que quando clicado chama a pagina principal e exibe o alimento selecionado. Perceba que a pagina abaixo possui um botao adicionar e um javascript que atualiza a pagina principal.

<?xml version='1.0' encoding='ISO-8859-1' ?>
		<ui:define name="corpo">
			<script language="Javascript" type="Text/Javascript">
			 function atualizaJanelaEdit() 
		      {  
				 window.opener.location="#{facesContext.externalContext.request.contextPath}/faces/simulador/anamnese/anamnese.xhtml";
			     return false;
		      }
			</script>      
			<h:form id="formularioTableDoSimulador" >
				<br/>
				   <div class="feature" >
				   
					<rich:datascroller id="scroll"
				   					   for="listagem" 
				   					   maxPages="20"
									   align="center"
									   immediate="true" />
									  
					<rich:dataTable id="listagem"
									rows="10"
									align="center"
			                        value="#{simuladorAnamneseActions.listaDeAlimentos}"
			                        var="alimentoMC" >
			                        
			            <f:facet name="header">
			                <rich:columnGroup>		            
			                    <h:column>
			                        <h:outputText value="Nome" />
			                    </h:column>
			                    <h:column>
			                        <h:outputText value="Medida Caseira" />
			                    </h:column>
			                    <h:column>
			                        <h:outputText value="Quant. da medida caseira" />
			                    </h:column>
			                    <h:column>
			                        <h:outputText value="Adicionar" />
			                    </h:column>
			                </rich:columnGroup>
			            </f:facet>
						
			            <h:column>
			             	<h:outputText id="nome" value="#{alimentoMC.alimento.nome}" />
			            </h:column>
			            
			            <h:column>
			                <h:outputText id="medidaCaseira" value="#{alimentoMC.medidaCaseira.nome}"/>
			            </h:column>
			           
			            <h:column>
			            	<a4j:commandLink id="quantidade" value="#{alimentoMC.qtdDaMedidaCaseira}" action="#{simuladorAnamneseActions.prepararAlteracao}"
			 			 				     onclick="Richfaces.showModalPanel('panelConfirmacaoAlteracao',{heigth:100, width:450, top:300})" >
							    <!-- 
								<f:setPropertyActionListener value="#{alimentoMC}" target="#{simuladorAnamneseActions.alimentoMedidaCaseiraCorrente}"/>
								-->	
			                </a4j:commandLink>
			            </h:column>
			            
			            <h:column>
			                <h:commandButton id="botao" onclick="atualizaJanelaEdit()"
				                						immediate="true"
				                						value="adicionar"
				                						action="#{simuladorAnamneseActions.adicionarNaLista}" />
			            </h:column>
			         
			        </rich:dataTable>
			        
				</div>
				<br/>
				<br />
			      <center>
				    <h:panelGrid columns="1">
					 <h:commandButton value="voltar" action="retornar" immediate="true" styleClass="botao" />
					</h:panelGrid>
				  </center>
			            
			 </h:form>
			 
			 <rich:modalPanel id="panelConfirmacaoAlteracao" autosized="true" height="120" width="400">
		
				<f:facet name="header">
					<h:panelGroup>
						<h:outputText value="Atencao"></h:outputText>
			    	</h:panelGroup>
				</f:facet>
		
				<f:facet name="controls">
					<h:graphicImage value="/recursos/imagens/close.png"
									onclick="Richfaces.hideModalPanel('panelConfirmacaoAlteracao')" />
				</f:facet>
						
			<h:form id="formularioPanelAlteracaoDoSimulador">
		
				<h:panelGrid columns="4" cellpadding="1">
				<h:outputText value="Quantidade da medida-caseira" />:
				
				<h:inputText id="quantidade"
				             value="#{simuladorAnamneseActions.alimentoMedidaCaseiraCorrente.qtdDaMedidaCaseira}"
				             required="true"
				             size="5"
				             maxlength="4">
				<rich:ajaxValidator event="onfocus" />
				<rich:ajaxValidator event="onkeyup" />
				<f:validateDoubleRange minimum="0.5"/>
				</h:inputText>
				<rich:message id="errorMSG" for="quantidade" style="color: red"/>

				</h:panelGrid>

				<center>
				<br />
				<br />
				<h:panelGrid columns="2">
		
				<a4j:commandButton id="ok"
								   value="#{prompt.sim}"
								   reRender="formularioTableDoSimulador"
								   action="#{simuladorAnamneseActions.alterar}"
								   styleClass="botao">
				<rich:componentControl for="panelConfirmacaoAlteracao"
				     				   operation="hide"
									   event="onclick" />
				</a4j:commandButton>
		
				<a4j:commandButton id="cancelar"
								   value="#{prompt.nao}"
								   reRender="formularioTableDoSimulador"
								   immediate="true"
								   action="#{simuladorAnamneseActions.cancelar}"
								   styleClass="botao">
				 <rich:componentControl for="panelConfirmacaoAlteracao"
				     				   operation="hide"
									   event="onclick" />
				</a4j:commandButton>
				</h:panelGrid>
				</center>
				</h:form>
				</rich:modalPanel>
			 
			 <a4j:keepAlive beanName="simuladorAnamneseActions" />
			 
		</ui:define>

	</ui:composition>
</body>

////////////////////////////////////////////////////////////////////////////////////////

Voce precisara tambem deste template que esta abaixo, pois as minhas paginas sao formadas por pedaços de outras paginas.
Exemplo uma pagina possui rodape, cabecalho e corpo.

Bem meu amigo, espero ter ajudado, mas qualquer duvida poste ai, so nao sei se poderei responder de imediato.
Um abraço!

		<td align="center"><a href="http://www.uerj.br"><img src="#{facesContext.externalContext.request.contextPath}/recursos/imagens/nome_projeto.png" border="0" /></a> </td>
		
		<td align="right" ><a href="http://www.nutricao.uerj.br"><img src="#{facesContext.externalContext.request.contextPath}/recursos/imagens/logo_nutricao_peq.png" border="0" /></a></td>
	</tr>
</table>

<f:view>
<f:loadBundle basename=“prompt” var=“prompt” />
<f:loadBundle basename=“mensagens” var=“mensagemSistema” />

<h:form>
	<ui:insert name="menu">
		<rich:toolBar>
		
			<rich:dropDownMenu>
				<f:facet name="label">
					<h:commandLink value="#{prompt.voltar}" action="home" styleClass="linkMenu"/>
				</f:facet>
        	</rich:dropDownMenu>
        	
			<rich:dropDownMenu>
				<f:facet name="label">
					<h:commandLink value="Exibir Lista de Ceps" onclick="abrirJanelaCep()" styleClass="linkMenu"/>
				</f:facet>
        	</rich:dropDownMenu>
        	
			<rich:dropDownMenu>
				<f:facet name="label">
					<h:commandLink value="#{prompt.salvar}" action="home" styleClass="linkMenu"/>
				</f:facet>
        	</rich:dropDownMenu>
        	
		</rich:toolBar>
	
<ui:insert name="submenu"/>

</ui:insert>
</h:form>
<rich:spacer width=“1” height=“5” />

<h:messages id="msgSistema" globalOnly="true" errorClass="errorGlobal" infoClass="successGlobal" />

<ui:insert name="corpo"/>



<div id="rodape">
	#{prompt.copyRight} <br />
		<b>#{prompt.usuario_tipoUsuario}:</b> <h:outputText value="[ #{sessaoDoUsuario.usuarioLogado.tipoUsuario.tipoUsuario} ]"/>
</div>

</f:view>

//FIM