Problema com Rich:Panel + H:form

10 respostas
L

Bom, se alguém puder me ajudar. Estou com o seguinte código:

<div style="width: 790px; height: 340px;">
                        <h:form id="frmHospital">
                            <rich:panel header="Novo hospital" style="width: 100%; height: 340px;">
                                <rich:tabPanel id="tbHospital" switchType="client">
                                    <rich:tab header="Geral">
                                        <f:view>
                                            <h:form id="frmHospitalCliente">
                                                <ui:include src="/hospital/hospital_cliente.xhtml"/>
                                            </h:form>
                                        </f:view>
                                    </rich:tab>
                                    <rich:tab header="Documentos">
                                        <f:view>
                                            <h:form>
                                                <ui:include src="/hospital/hospital_documento.xhtml"/>
                                            </h:form>
                                        </f:view>
                                    </rich:tab>
                                    <rich:tab header="Responsáveis Técnicos">
                                        <f:view>
                                            <h:form>
                                                <ui:include src="/hospital/hospital_responsavel.xhtml"/>
                                            </h:form>
                                        </f:view>
                                    </rich:tab>
                                    <rich:tab header="Preferências de Compra">
                                        <f:view>
                                            <h:form>
                                                <ui:include src="/hospital/hospital_preferencia_compra.xhtml"/>
                                            </h:form>
                                        </f:view>
                                    </rich:tab>
                                </rich:tabPanel>
                            </rich:panel>
                            <rich:panel style="width: 100%;">
                                <table style="width: 100%; height: 100%;">
                                    <tr>
                                        <td align="left"><h:outputText style="#{constanteBean.COR_FONTE_TEXTO_CAMPO_OBRIGATORIO}" value="#{constanteBean.TEXTO_CAMPOS_OBRIGATORIOS}"/></td>                                    
                                        <td align="right"><h:commandButton value="Incluir" style="width: 100px;" action="#{hospitalBean.incluir()}"/></td>
                                    </tr>
                                </table>
                            </rich:panel>
                        </h:form>
                    <rich:notifyMessages stayTime="3000" nonblocking="true"/>
                </div>

Porém esta linha não executa o action <td align="right"><h:commandButton value="Incluir" style="width: 100px;" action="#{hospitalBean.incluir()}"/></td>
Mas, se o segundo Panel for movido para que fique antes do primeiro Panel, o action executa. Alguém já passou por uma situação parecida, ou tem idéia do que possa ser?

Grato

10 Respostas

Hebert_Coelho

Mas pelo que eu vi, você está colocando um form dentro de outro.

Deixe um form apenas uai.

L

Obrigado pela reposta jakefrog.

Estou utilizando forms individuais, pois cada aba possui um formulário que precisa ser submetido separadamente, para que o usuário não tenha que preencher todos os campos, para então gravar os dados de uma das abas. Ao fim é necessário submete-lô por completo. Seria possível com apenas um form realizar este procedimento?

Hebert_Coelho

Aqui na minha empresa utiliza richfaces mas até hoje não vi utiliza vários forms em páginas.

Já ouvi dizer que pode-se ter mais de um na mesma página, mas não um dentro do outro. Foi oq eu ouvi dizer… Não sei ao certo. [=

Melhor esperar alguém que saiba melhor desse assunto. [=

Hebert_Coelho

Eu fiquei curioso aqui e pesquisei, talvez essa discussão te ajude: http://www.webmasterworld.com/html/3985542.htm
:slight_smile:

L

Muito obrigado novamente jakefrog.

Talvez para ficar mais claro, segue print de uma das abas. - http://imageshack.us/photo/my-images/809/telax.png
Vocês talvez possui alguma idéia de como eu posso fazer este cadastro?

Hebert_Coelho

Eu” faria assim (não tenho muuuuita noção de patterns web não tah :roll: ):
O <h:form id=“frmHospital”> eu colocaria apenas no botão incluir.

Sendo assim, cada tab teria seu form, e o botão também teria seu form.
E você não teria um form dentro do outro. [=

M

Por que você não utiliza o ajax e para de ficar dando submit na página? Então seria necessário somente um form para fazer somente um submit.
Ou faça como o colega falou, coloque o <h:form id=“frmHospital”> somente para o botão Incluir. Há algum problema quanto a isso?

Ou há necessidade mesmo de ter form dentro de form?
Acho que form dentro de form não dá certo, pois quando você dá submit em um, o outro é finalizado forçadamente pois é feito refresh na página.

jv.nicocelli

Bom dia,

LeonardoU de que maneira você resolveu seu problema?

Estou passando pela mesma situação.
Tenho a tab A, B e C e quando clicar no botão quero salvar somente os dados da tab A e B.

U

Olá nicocelli.
Naquela situação tive que adaptar a aplicação para fazer a submissão dos forms individualmente. Por ex:

<rich:tabPanel>
   <rich:tab>
      <h:form>
      ...conteudo
      </h:form>
   </rich:tab>   
   <rich:tab>
      <h:form>
      ...conteudo
      </h:form>
   </rich:tab>
</rich:tabPanel>

Qualquer situação, pergunte.
Abraço.

jv.nicocelli

Na verdade, minha situação é um pouco diferente.

Exemplo, tenho um tabPanel com 4 tabs, A,B,C e D.

O botão que dispara a ação não está no mesmo form do TabPanel.

De que maneira posso fazer para que quando clicar no botão passe para o meu Bean informações de outro form?

Quando eu clicar no botão, quero que seja enviado ao Bean informações do tab A,B e C somente.

Obrigado

Criado 6 de fevereiro de 2012
Ultima resposta 12 de jun. de 2012
Respostas 10
Participantes 5