Problema com campos required e onChange="submit()"

10 respostas
P

Galera tenho alguns combos alinhados no meu sistema e por causa disso uso

valueChangeListener="#{businessUnit.businessUnitItemsAvailableListener}" immediate=“true” onchange=“submit()”>

No meu combo,

Por causa disso tenho um problema.

tenhos alguns campos required na página. e quando eu altero a selação do meu combo ele dá o submit e aparece uma mensagem de erro pelos campos required. Como fazer para ele não validar os meus campos até que eu clique em concluir?

Valew

10 Respostas

P

Por favor, ainda não achei a solução!

P

Existe alguma forma de usar o ajax support passando um evento, como faz o ValueChangeListener?

tentei o action listener, mas ele não invoca nenhum método.

Guilherme_Gomes

Se eu consegui deduzir bem o que você necessita, você precisa usar o valor desse combo no onchange para carregar algo em algum outro campo, estou certo?

Então faça algo parecido com isso:
**Estou supondo que você use as bibliotecas necessarias para isso…

<a4j:region>
  <h:selectOneMenu value="#{mb.value}" ...>
    <a4j:support event="onchange" reRender="alguem" />
    // ... items ...
  </h:selectOneMenu>
</a4j:region>

<h:selectOneMenu value="#{mb.value2}" id="alguem" ...>
  // ... items ...
</h:selectOneMenu>

Se voce for usar o value em mais alguma requisicao posterior do AJAX (como um terceiro combo que é carregado a partir do segundo), você pode usar o a4j:keepAlive no seu MB.

Espero ter ajudado.

P

Então guilherme, meu problema é o seguinte.

Eu tentei usar o ajax com on change, só que eu preciso usar o evento valueChangeListener, pq eu preciso fazer umas validações com o que o kra selecionou no primeiro combo, essa parte de validar e passar o valor tá funcionando. O problema é que tenho outros campos na pagina, que não tem nada a ver com o combo, que são required, aí quando eu to selecionando algo diferente no combo ele tá dando um submit na pagina e mostrando erro que alguns campo required não foram preenchidos.

Entendeu onde tá meu problema?

Se tivesse um jeito de passar o evento de change pelo ajax support, sem dar submit acho q resolveria, mas acho q não dá!

Guilherme_Gomes

Você já tentou usar o actionListener do a4j:support? Ele chama uma função e pode fazer a verificação que você precisa.

P

Então! não consigo fazer esse kra chamar nenhum metodo meu!

Eu coloco ele, crio um metodo void com actionevent e ele não é chamado de jeito nenhum kra, tem algum macete?

Guilherme_Gomes

Não, nenhum macete… Veja se está dando uma exception no seu metodo… Crie um metodo vazio com um System.out.println()

Para referencia:
https://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/docs/devguide/en/html/support.html

P

Kra, tá quase…

tem como eu dar um submit() no ajax support? ou como eu faço isso no código java?

Valew

deadlock

já tentou algo do tipo:

FacesContext.getCurrentInstance().renderResponse();

no seu listener (sem o ajax)? dessa forma ele “pula” a fase de validação aceitando os valores em branco nos campos required, teoricamente :wink: .

B

Entao não vo dizer que essa seja a melhor solução, mas é uma saída!!

<h:commandButton type="submit" immediate="true" style="visibility: hidden;display:none" onclick="bCancel=true;" id="atualizaCombo" action="#{bean.atualizaCombo}"/> . . . valueChangeListener="#{businessUnit.businessUnitItemsAvailableListener}" immediate="true" onchange=""javascript:atualizaCombo()""> . . . function atualizaCombo() { document.dadosPessoaisCaduForm['dadosPessoaisCaduForm:atualizaCombo'].click(); }

em um projeto que fiz a opção "onclick=“bCancel=true;” no botão faz com que ele não faça validação dos campos!

Criado 15 de julho de 2009
Ultima resposta 17 de jul. de 2009
Respostas 10
Participantes 4