JSF + commandButton

Olá, alguem poderia me dizer como fazer o meu commandButton nao fazer submit, pois vejo q todo botão no jsf ele faz um submit no form, mesmo que ele nao seja do tipo submit…eu queria validar meu formulario(java script) antes de enviar mas estou com dificuldade nisso…alguem pode me ajudar?

 <h:commandButton value="Emitir..." action="#{index.submit}" tabindex="19" /> 

O metodo submit é sempre chamado, eu queria validar o form só depois chamar o metodo submit.

att,

Quinho.

Bom… nao sei se eh isso que vc quer… mas eh bem simples

Os eventos de javascript sempre sao executados antes do submit do botao…
Assim é só chamar uma função no evento que quiser…

exemplo:

<h:commandButton value="Emitir..." action="#{index.submit}" tabindex="19" onclick="javascript: return validar();" /> 

onde validar é a sua função javascript…
e caso retorne false não sera executado o submit

Tente ai!!!

Cara show de bola, valeu mesmo você quebrou um super galho pra me…agora me diz uma coisa, se vários campos obrigatorios estiverem em branco eu gostaria de mostrar só uma mensagem…tipo assim, se tivesse pelo menos um não seria obrigatorio olhar o restante…

att, Quinho

E ai…

Bom… esse seu problema ai eh mais facil ainda…

Todo componente tem um id… certo?! E a forma mais facil que eu vejo pra fazer isso, eh por exemplo, pegando o id de cada um, e verificando o conteudo…

Para isso vc terá que dar os nomes aos seus componentes, pois caso contrario eles serao gerados automaticamente… o que eh uma chatisse… rss… mas funciona…

Faça assim:

   ...

  /* Na Jsp coloque ids ordenados nos seus componentes
      Vou dar o exemplo de tres campos inputText onde 
      apenas dois sao obrigatorios e um botao submit que
      antes de tudo executa a funcao javascript de verificacao dos
      campos chamada no onclick do botao */

  <h:commandButton action=#{seuBean.suaAcao} onClick="javascript: return verificaCamposObrigatorios(this);"/>

  <h:inputText id="inpo1" value="#{seuBean.valor1}" title="#{bundle['nomeCampo1']}"/>
  <h:inputText id="inp2" value="#{seuBean.valor2}" title="#{bundle['nomeCampo2']}"/>
  <h:inputText id="inpo3" value="#{seuBean.valor3}" title="#{bundle['nomeCampo3']}"/>

   /* Onde inpo1 é input obrigatorio (1) 
                inp2 é input nao obrigatorio (2) 
                inpo3 é input obrigatorio (3) */

    ...

  /* Bom... sua jsp esta pronta certo?! Agora falta criar a funcao 
      verifica campos obrigatorios em javascript */

   function verificaCamposObrigatorios(campo) {
        boo = true;
        cont = 1;

        while( boo ) {
             id = campo.form + ":inpo" + cont;

             cmp = "";
             if ( document.getElementById( id ) )
                  cmp = document.getElementById( id );

             if ( cmp != "" ) {
                  if ( cmp.value == "" ) {
                      alert( "Preencha corretamente o campo: " + cmp.title );
                      return false; // Nao deixa o componente dar submit
                  }
             } else {
                 id = campo.form + ":inp" + cont;

                 if ( document.getElementById( id ) )
                      boo = true;
                 else
                      boo = false;
             }

             cont++;
        }

        return true;
   }

Bom… eu nao testei esse código ai nao… mas tente entender e testa-lo…
Provavelmente com alguns acertos ele funcionara… lembrando que eu estou olhando id por id e verificando o conteudo de cada um…
No alert eu estou mostrando o title do componente… que deve ser o nome do campo…

Caso nao funcione ou nao entende… poste aqui q tentarei ajuda-lo…

Inté…