Dois botões no mesmo form

8 respostas
M

Pessoal,

Será que estou com conceito errado?
Tenho esse formulário bem simples:

<h:form id="frmCadastro">
      <p:inputText id="edtNome" value="#{meuBean.nome}" required="true" size="50" />
      <p:inputText id="edtSobrenome" value="#{meuBean.sobreNome}" required="true" size="50" />
      <p:inputText id="edtCep" value="#{meuBean.cep}" required="true" size="20" />
      <p:commandButton id="btnBuscaCEP" value="Buscar CEP" actionListner="#{meuBean.buscaCEP}" ajax="true" update="edtEndereco" />
      <p:inputText id="edtEndereco" value="#{meuBean.nomeEndereco}" size="100" />

      <p:commandButton id="btnEnviaCadastro" value="Buscar CEP" actionListner="#{meuBean.enviaCadastro}" ajax="true" update="@form" />
</h:form>

Ou seja, quando eu clicar no botã “btnBuscaCEP” eu preciso submeter somente o campo “edtCep” para o meu MB, e quando eu clicar no botão “btnEnviaCadastro” ele submete o formulário todo, mas não estou conseguindo, mesmo usando o immediate no botão “btnBuscaCEP” ele executa meu MB mas o valor do campo “edtCep” vai nulo para o meu MB…

Acredito que estou com conceito errado, sou novato em JSF… Nesse caso eu preciso ter dois formulários separados? um para buscar o cep e outro para submeter o formulário?

Abs.
Marcelo

8 Respostas

R

Tenta assim:

M

Olá Rodrigo

Cara desta forma ele simplesmente não faz nada, nada na página e nada no console…

Alguma dica?

Abs.
Marcelo

R

mribeiro:
Olá Rodrigo

Cara desta forma ele simplesmente não faz nada, nada na página e nada no console…

Alguma dica?

Abs.
Marcelo

Tenta passar o caminho completo do componente… tipo form:edtCep

Caso nao deh certo, talvez vc tenha q ter um container pai e atualizar o container… como um f:subView…

assim

<f:subview id="subCep">
       <p:inputText id="edtCep" value="#{meuBean.cep}" required="true" size="20" />
</f:subview>

<p:commandButton id="btnBuscaCEP" value="Buscar CEP" actionListener="#{meuBean.buscaCEP}" ajax="true" update="edtEndereco" process="subCep" />
M

Mesma coisa… Não acontece nada, tanto colocando o caminho completo “frmCadastro:edtCep” como criado uma subView, ele só dá sinal de vida quando eu coloco process="@this", e update="@form"… aí ele funciona, porém manda o valor do edtCep = null

Cara, uma coisa que deveria ser tão simples… acho que deve ter algum truquezinho aí.

J

Cara, eu não entendo nada de JSF, mas um pouco de web. Quem sabe se você não colocar os commandbuttons em forms separados?!

M

Olá jaboot,

Então com forms separados até funciona, mas o problema é que quando eu clicar no botão que submete o form inteiro ele só submeterá um pedaço do formulário, exemplo:

Isso me traria outro problema, mas obrigado pela dica… deve ter uma forma elegante de fazer isso é que ainda não caiu a ficha… rsrsrs

Abs.
Marcelo

J

Assim:

Html normal você não deve colocar um form dentro de outro, nem dois botões submit em um mesmo form.

pelo menos eh o recomendado.

Qualquer coisa, apele à gambiarra. Coloque o form em outra parte da página, e mova os dados para o outro form via js, algo assim.

Por isso que eu gosto de jquery. Você se ferra na hora de fazer o componente, mas faz do jeito que tem que funcionar.

T

Tenta assim:

<p:commandButton id="btnBuscaCEP" value="Buscar CEP" actionListner="#{meuBean.buscaCEP}" ajax="true" update="edtEndereco" process="@this, edtcep" />

(Acrescentei o process).

Criado 18 de abril de 2013
Ultima resposta 19 de abr. de 2013
Respostas 8
Participantes 4