Validar um Form que o Botão Não está Dentro [PRIMEFACES - JSF]

7 respostas
colored

Então estou com um probleminha aqui em uma página e gostaria de saber se tem como fazer isso… por exemplo eu tenho 3 campos em 1 form no inicio da pagina,
depois tem mais 3 form’s com coisas independentes que não precisam ser validadas ao cadastrar o objeto… e no final da tela tem um form com um botão salvar…
só que esse botão não consegue validar os dados do primeiro form que tem os 3 campos… tem como fazer isso? eu validar esse campos que estão em outro form???

Se alguem puder ajudar Muito Obrigado, se não puder Obrigado também :D…

7 Respostas

R

se eu não estiver enganado ao cllicar no submit ele vai submeter os dados do form atual, e não de outro form.
porem você pode forçar a submissão do outro form em javascript no onclick do botão.

E

Esses outros forms estão dentro de dialog?

colored

Não estão… eu tive q repartir a tela em alguns forms… então o primeiro com alguns campos… ai vem forms independentes… que ele se validam dentro deles mesmo o q tem q ser realizado até ai tranquilo…
ai no ultimo onde vou cadastrar o que fiz na tela… teria que validar o required dos 3 campos que estão no primeiro form… Tem como?

E

Não creio ser necessário separar em tantos forms. Está usando tabview ? Wizard ?

colored

Não o motivo da separação dos forms… eh que são pequenos blocos de cadastros, mas uma coisa nao pode influenciar outra… com validações etc…
por isso fiz isso…

K

Boa tarde caros amigos, estou com esse problema também, em meu caso uso tabView e tenho forms separados para cada tab.
Quando forço o submit via javascript no atributo onclick do commandButton o backend é processado mas todos os campos do formulário que
estavam preenchidos no Frontend chegam vazios ou nulos. Como resolveram o problema?

Um abraço e obrigado pela atenção…

ryegros

Caro, fiz aqui da seguinte forma e esta dando certo para mim.

No form externo:

<h:form>
        <p:panel>
            <p:commandButton id="btnSalvarUsuario"  value="Salvar" onclick="rcusdados()" ajax="true" />
        </p:panel>
    </h:form>

No form da primeira tab:

<h:form id="formulario" prependId="false">

                    <h:panelGrid columns="3" cellpadding="5">

                        <!-- ID usuário -->
                        <h:outputLabel value="#{ msgs.txtUsuario_2p}" for="idusuario" />
                        <p:inputText id="idusuario" label="#{ msgs.txtUsuario_2p}"      value="#{usuarioBean.usuario.usuario}" maxlength ="15" size="15" required="true"  />

                        <!-- Nome -->
                        <h:outputLabel value="#{ msgs.txtNome_2p}" for="nome"  />
                        <p:inputText id="nome"          label="#{ msgs.txtNome_2p}"     value="#{usuarioBean.usuario.nome}" maxlength ="50" size="50" required="true"  />

                        <!-- Cargo -->
                        <h:outputLabel value="#{ msgs.txtCargo_2p}" for="cargo" />
                        <p:inputText id="cargo"         label="#{ msgs.txtCargo_2p}"    value="#{usuarioBean.usuario.cargo}" maxlength ="30" size="30"  />

                        <!-- Telefone -->
                        <h:outputLabel value="#{ msgs.txtTelefone_2p}" for="telefone" />
                        <p:inputMask id="telefone"      label="#{msgs.txtTelefone_2p}"  value="#{usuarioBean.usuario.telefone}" maxlength ="15" size="15" mask="([telefone removido]"/>

                        <!-- Email -->
                        <h:outputLabel value="#{ msgs.txtEmail_2p}" for="email" />
                        <p:inputText id="email"         label="#{msgs.txtEmail_2p}"     value="#{usuarioBean.usuario.email}" maxlength ="50" size="50" required="true" />

                        <!-- Status do usuário -->
                        <h:outputText value="#{msgs.txtStatus_2p}" />
                        <p:selectOneRadio id="optionsusu" value="#{usuarioBean.usuario.ativo}" >
                            <f:selectItem itemLabel="#{msgs.optAtivo}"      itemValue="true"   />
                            <f:selectItem itemLabel="#{msgs.optInativo}"    itemValue="false" />
                        </p:selectOneRadio>
                    </h:panelGrid>

                    <p:remoteCommand id="rcusdados" name="rcusdados" update="formulario,:growl" process="@form" actionListener="#{usuarioBean.salvar}" />
                </h:form>

Se der certo para vc, não esqueça de marcar como resolvido para ajudar outras que estejam com o mesmo problema.

Abrçs

Primefaces 3.2

Criado 28 de setembro de 2011
Ultima resposta 1 de jun. de 2012
Respostas 7
Participantes 5