Dois botões no mesmo form

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

Tenta assim:

Olá Rodrigo

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

Alguma dica?

Abs.
Marcelo

[quote=mribeiro]Olá Rodrigo

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

Alguma dica?

Abs.
Marcelo[/quote]

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" /> 

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í.

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?!

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

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.

Tenta assim:

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

(Acrescentei o process).