[RESOLVIDO][JSF] Enviar dados de um Bean para outro Bean

1 resposta
w1l14n

Seguinte, estou precisando contruir uma página a partir dos dados de outra.

Eu consigo fazer funcionar, mas a questão é que ao carregar a página destino eu preciso do código para carregar um datatable.

Depurando eu percebi depois que a página é renderizada é que os valores são preenchidos, com aqueles inicialmente foram salvos com o savestate.

Um exemplo é que quando seleciono algum opção do comboBox da página destino, a minha datatable é organizada de acordo com o valor selecionado, isso depois dela renderizada, desta forma redenriza corretamente o meu datatable.

Eu preciso que a página destino seja criada com o "idReuniao" da linha da tabela de onde partiu o evento.

Já tentei usando sessão e passagem de parâmetro, só que no construtor do Bean destino o parâmetro é sempre restaurado como nulo.

Parece que os valores salvos no savestate são setados depois que o construdor é executado, com isso minha datatable na página destino vem sem nenhum selectOneMenu marcado.

Alguém poderia... mais uma vez me ajudar. :oops:
Vlw.

Abaixo o código da página origem:
<h:form id="cadReuniao" rendered="#{UsuarioSessionBean.usuarioLogado}">
               <font face="Verdana,Arial" size="+1">
                  <center>Cadastro de Reuni&otilde;es</center>
               </font>
               <fieldset class="fieldset_cadastro">
                  <table id="tabela_logoff">
                     <tr>
                        <td>*Tema:</td>
                        <td>
                           <h:inputText id="temaReuniao" value="#{cadReuniaoBean.tema}" size="50" maxlength="50" styleClass="edit"/>
                        </td>
                     </tr>
                     <tr>
                        <td>*Local</td>
                        <td>
                           <h:inputText id="localReuniao" value="#{cadReuniaoBean.localReuniao}" size="50" maxlength="50" styleClass="edit"/>
                        </td>
                     </tr>
                     <tr>
                        <td>*Data:</td>
                        <td>
                           <rich:calendar id="dataReuniao" value="#{cadReuniaoBean.dataReuniao}" datePattern="dd/MM/yyyy" popup="true" inputSize="8" firstWeekDay="0" showWeeksBar="false" showFooter="true" styleClass="edit"/>
                        </td>
                     </tr>
                     <tr>
                        <td>*Hora:</td>
                        <td>
                           <h:inputText id="horaReuniao" value="#{cadReuniaoBean.horaReuniao}" size="3" maxlength="5" styleClass="edit"/>
                        </td>
                     </tr>
                  </table>
               </fieldset>
               <table width="800px" id="tabela_logoff">
                  <tr>
                     <td width="39%">
                        <font class="msgAlerta">O (*) indica os campos obrigat&oacute;rios.</font>
                     </td>
                     <td align="center" width="21%">
                        <h:commandButton id="btnSalvar" value="Salvar" action="#{cadReuniaoBean.cadastrar}" styleClass="cmdBotao"/>
                        <h:commandButton id="btnLimpar" value="Limpar" action="#{cadReuniaoBean.setNovo}" styleClass="cmdBotao">
                           <f:setPropertyActionListener value="" target="#{cadReuniaoBean.tema}"/>
                           <f:setPropertyActionListener value="" target="#{cadReuniaoBean.localReuniao}"/>
                           <f:setPropertyActionListener value="" target="#{cadReuniaoBean.dataReuniao}"/>
                           <f:setPropertyActionListener value="" target="#{cadReuniaoBean.horaReuniao}"/>
                        </h:commandButton>
                     </td>
                     <td align="left" width="40%">
                        <h:messages errorClass="msgError" infoClass="msgInfo" fatalClass="msgError"/>
                     </td>
                  </tr>
               </table>
            </h:form>

            <h:form id="lstReunioes" rendered="#{UsuarioSessionBean.usuarioLogado}">
               <br><center/><b/>Lista de Reuni&otilde;es Cadastradas
               <hr class="hr">
               <div align="center" style="height:224px; overflow:auto;">
                  <t:dataTable id="lstReunioes" var="lstReunioes" styleClass="tabela_cadastro" headerClass="cabecalho" value="#{cadReuniaoBean.consulta}" rendered="#{! empty cadReuniaoBean.consulta}">
                     <t:column width="5%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Código"/>
                           </f:facet>
                           <h:outputText id="lstIdReuniao" value="#{lstReunioes.idReuniao}"/>
                        </center>
                     </t:column>

                     <t:column width="30%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Tema"/>
                           </f:facet>
                        </center>
                        <h:outputText id="lstTemaReuniao" value="#{lstReunioes.tema}"/>
                     </t:column>

                     <t:column width="26%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Local"/>
                           </f:facet>
                        </center>
                        <h:outputText id="lstLocalReuniao" value="#{lstReunioes.localReuniao}"/>
                     </t:column>

                     <t:column width="5%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Data"/>
                           </f:facet>
                           <h:outputText id="lstDataReuniao" value="#{lstReunioes.dataReuniao}"/>
                        </center>
                     </t:column>

                     <t:column width="5%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Hora"/>
                           </f:facet>
                           <h:outputText id="lstHoraReuniao" value="#{lstReunioes.horaReuniao}"/>
                        </center>
                     </t:column>

                     <t:column width="7%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Assuntos"/>
                           </f:facet>
                           <h:commandButton id="cadAssunto" action="cadAssuntos" image="imagens/assuntos.gif" alt="Cadastrar Assuntos">
                              <f:setPropertyActionListener value="#{lstReunioes.idReuniao}" target="#{cadAssuntoBean.idReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.tema}" target="#{cadAssuntoBean.tema}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.localReuniao}" target="#{cadAssuntoBean.localReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.dataReuniao}" target="#{cadAssuntoBean.dataReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.horaReuniao}" target="#{cadAssuntoBean.horaReuniao}"/>
                           </h:commandButton>
                        </center>
                     </t:column>

                     <t:column width="7%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Part."/>
                           </f:facet>
                           <h:commandButton id="cadParticipantes" action="cadParticipante" image="imagens/participantes.jpg" alt="Cadastrar Participantes">
                              <f:setPropertyActionListener value="#{lstReunioes.idReuniao}" target="#{cadParticipanteBean.idReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.tema}" target="#{cadParticipanteBean.tema}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.localReuniao}" target="#{cadParticipanteBean.localReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.dataReuniao}" target="#{cadParticipanteBean.dataReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.horaReuniao}" target="#{cadParticipanteBean.horaReuniao}"/>
                           </h:commandButton>
                        </center>
                     </t:column>

                     <t:column width="7%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Alterar"/>
                           </f:facet>
                           <h:commandButton id="editarReuniao" action="null" image="imagens/editar.gif" alt="Alterar Cadastro da Reunião">                              
                              <f:setPropertyActionListener value="#{lstReunioes.idReuniao}" target="#{cadReuniaoBean.idReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.tema}" target="#{cadReuniaoBean.tema}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.localReuniao}" target="#{cadReuniaoBean.localReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.dataReuniao}" target="#{cadReuniaoBean.dataReuniao}"/>
                              <f:setPropertyActionListener value="#{lstReunioes.horaReuniao}" target="#{cadReuniaoBean.horaReuniao}"/>                              
                           </h:commandButton>
                        </center>
                     </t:column>

                     <t:column width="7%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Excluir"/>
                           </f:facet>
                           <h:commandButton id="excluirUsuario" action="#{cadReuniaoBean.excluir}" image="imagens/excluir.gif" alt="Excluir Cadastro da Reunião"
                                            onclick="if (!confirm('Tem certeza que deseja excluir a reunião?')) return false">
                              <f:setPropertyActionListener value="#{lstReunioes.idReuniao}" target="#{cadReuniaoBean.idReuniao}"/>
                           </h:commandButton>
                        </center>
                     </t:column>

                     <t:saveState value="#{cadReuniaoBean.idReuniao}"/>
                     <t:saveState value="#{cadParticipanteBean}"/>
                     <t:saveState value="#{cadAssuntoBean}"/>
                  </t:dataTable>
               </div>
            </h:form>
Abaixo o código da página destino:
<a4j:form id="frmCadParticipantes" rendered="#{UsuarioSessionBean.usuarioLogado}">
               <fieldset class="fieldset_cadastro">
                  <table class="tabela_cadastro" width="800px">
                     <tr>
                        <td width="5%">Reuni&atilde;o:</td>
                        <td width="45%">
                           <h:outputText id="reuniao" value="#{cadParticipanteBean.tema}"/>
                        </td>
                        <td width="5%">Local:</td>
                        <td width="45%" align="left">
                           <h:outputText id="local" value="#{cadParticipanteBean.localReuniao}"/>
                        </td>
                     </tr>
                     <tr>
                        <td width="5%">Data:</td>
                        <td width="45%" align="left">
                           <h:outputText id="dataReuniao" value="#{cadParticipanteBean.dataReuniao}"/>
                        </td>
                        <td width="5%">Hora:</td>
                        <td width="45%" align="left">
                           <h:outputText id="horaReuniao" value="#{cadParticipanteBean.horaReuniao}"/>
                        </td>
                     </tr>
                     <tr>
                        <td width="5%">Cargo:</td>
                        <td colspan="3">
                           <t:selectOneMenu id="menuSltCargos" value="#{cadParticipanteBean.idCargo}" styleClass="comboBox">
                              <f:selectItem itemLabel="Todos" itemValue="0"/>
                              <f:selectItems id="lstCargos" value="#{cadParticipanteBean.comboBoxCargos}"/>
                              <a4j:support event="onchange" reRender="lstParticipantes" action="#{cadParticipanteBean.atualizaDataTable}"/>
                           </t:selectOneMenu>
                           
                        </td>
                     </tr>
                  </table>
               </fieldset>
               <t:saveState value="#{cadParticipanteBean}"/>
            </a4j:form>

            <a4j:form id="frmLstCadParticipantes" rendered="#{UsuarioSessionBean.usuarioLogado}">
               <table width="800px" id="tabela_logoff">
                  <tr>
                     <td align="right" colspan="2" width="60%">
                        <h:commandButton id="btnSalvar" value="Salvar" styleClass="cmdBotao" action="#{cadParticipanteBean.cadastrar}"/>
                        <h:commandButton id="btnLimpar" value="Limpar" styleClass="cmdBotao">
                        </h:commandButton>
                     </td>
                     <td align="left" width="40%">
                        <h:messages errorClass="msgError" infoClass="msgInfo" fatalClass="msgError"/>
                     </td>
                  </tr>
               </table>
               <br><center/><b/>Marque os Participantes que deseja convidar para a Reuni&atilde;o
               <div align="center" style="height:211px; overflow:auto;">
                  <rich:dataTable id="lstParticipantes" var="lstParticipantes" value="#{cadParticipanteBean.listaParticipantes}" styleClass="tabela_cadastro" headerClass="cabecalho" width="780px">

                     <t:column width="8%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Convidar"/>
                           </f:facet>
                           <h:selectBooleanCheckbox id="parti" value="#{lstParticipantes.selecionado}"/>
                        </center>
                     </t:column>

                     <t:column width="5%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Código"/>
                           </f:facet>
                           <h:outputText id="idUsuario" value="#{lstParticipantes.idUsuario}"/>
                        </center>
                     </t:column>

                     <t:column width="32%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Nome Completo"/>
                           </f:facet>
                        </center>
                        <h:outputText id="nomeCompleto" value="#{lstParticipantes.nomeCompleto}"/>
                     </t:column>

                     <t:column width="25%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="Cargo"/>
                           </f:facet>
                        </center>
                        <h:outputText id="dscCargo" value="#{lstParticipantes.dscCargo}"/>
                     </t:column>

                     <t:column width="25%">
                        <center>
                           <f:facet name="header">
                              <h:outputText value="E-mail"/>
                           </f:facet>
                        </center>
                        <h:outputText id="email" value="#{lstParticipantes.email}"/>
                     </t:column>

                  </rich:dataTable>
               </div>
               <t:saveState value="#{cadParticipanteBean.idReuniao}"/>
            </a4j:form>

1 Resposta

w1l14n

Resolvido.

Criado 20 de agosto de 2009
Ultima resposta 20 de ago. de 2009
Respostas 1
Participantes 1