Pequena (e chata) dúvida em JavaServerFaces

6 respostas
javer

Tem uma coisa que tá me deixando de cabelo branco.

Utilizo o Netbeans com o Visual Web Pack e JavaServer Faces (e GlassFish 2 + MySQL).

Tenho um cadastro de usuário com 4 campos que são obrigatórios (adicionado no código java) e tenho um botão para Desistir do cadastro, onde quero sair do cadastro, nesse instante via código eu tento colocar .setRequired(false) nesses 4 campos para retornar para outra página, mas não aceita essa mudança de jeito nenhum, por que será isso?
login.setRequired(true);
senha.setRequired(true);
senha2.setRequired(true);
nome.setRequired(true);
Eu tenho também um formulário vitual chamado SalvarUsuario, mesmo eu usando form1.discardSubmittedValues("SalvarUsuario"); antes do return do método não adianta, as mensagens de erros dizendo que os campos são obrigatórios são mostradas.
public String cancelar_action() {
    login.setRequired(false);
    senha.setRequired(false);
    senha2.setRequired(false);
    nome.setRequired(false);

    getUsuarioDataProviderCadastro1().removeRow(getUsuarioDataProviderCadastro1().getCursorRow());
    getUsuarioDataProviderCadastro1().commitChanges();
    getUsuarioDataProviderCadastro1().refresh();
    form1.discardSubmittedValues("SalvarUsuario");

    return "cancelarUsuarioCase";
}

[img]http://www.kooky.com.br/images/erro-javaserverfaces.gif[/img]

Como faço para resolver isso? Acho que já deu pra notar que sou iniciante.

6 Respostas

FernandoCartaxo

estou começando com jsf agora, me corrijam se estiver errado:
o lifecycle do jsf primeiro ele valida pra depois entrar na action em si…
por isso que lança a validação…

dá uma olhada… http://www.ibm.com/developerworks/library/j-jsf2/

gigicantador

O botão (a ação) de cancelar o envio deve estar fora do form. Tipo

<h:form> <h:input /> <h:input /> <h:submitForm /> </h:form> <h:inputButton action="${cancelar}" />

Quando eu estava começando com faces também quebrei muito a cabeça com isso…

O único “problema” é que você vai ter que brigar com CSS para não quebrar o layout :wink:

gigicantador

gigicantador:
O botão (a ação) de cancelar o envio deve estar fora do form. Tipo

<h:form> <h:input /> <h:input /> <h:submitForm /> </h:form> <h:inputButton action="${cancelar}" />

Quando eu estava começando com faces também quebrei muito a cabeça com isso…

O único “problema” é que você vai ter que brigar com CSS para não quebrar o layout :wink:

Ah! E isso vale para os outros botões de ação que não submeterão o form.

fabio.massa

Fala javer blz?
Cara, ao invés de tentar setar seus campos com required=“false” para cancelar o cadastro, acho mais fácil usar o immediate=“true”, basta colocar essa propriedade dentro do commandButton.

http://java.sun.com/javaee/javaserverfaces/1.2/docs/tlddocs/h/commandButton.html

Abraços,

E

Boa noite pessoal, acabei de fazer essa pequena alteração sugerida pelo fabio, adicionei o immediate no commandButton “Cancelar” que está no mesmo form do botão salvar, e funcionou direitinho! Abraços!

vanilton.coelho

Exato, o immediate=“true” pula o processo de validação que faz parte do ciclo do JSF

Criado 18 de abril de 2009
Ultima resposta 26 de mai. de 2009
Respostas 6
Participantes 6