Problemas com JSF

10 respostas
mestrekame

Olá Comunidade

Continuo na minha caminhada para aprender JSF, e nessa caminhada continuo me deparando com alguns problemas(coisa normal) mas dessa vez me deparo com um problema que não apresenta sintomas, ou seja, não mostra erro algum.
É o seguinte, fiz um formulario para cadastro de usuarios em um banco de dados, ele ficou dessa forma.

...
<div id="principal">
                    <br>
                    <div align="center" style="color:#FFFF99; font-size:12px;">Os campos marcados com <font color="#FF3300">*</font> são facultativos.</div><br>
                    <f:view>
                        <h:form id="formCadastroUsuario">
                            
                            <font color="red">
                                <br>
                                <h:message showSummary="true" for="formCadastroUsuario"/>
                                <br>
                            </font>
                            
                            <table style="font-size:10px;">
                                <tr>
                                    <td>Nome:</td>
                                    <td><h:inputText id="nome" maxlength="30" size="40" value="#{usuarioBean.nome}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                </tr>
                                <tr>
                                    <td>Login:</td>
                                    <td><h:inputText id="login" maxlength="10" size="15" value="#{usuarioBean.login}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Senha:</td>
                                    <td><h:inputSecret id="senha" maxlength="10" size="15" value="#{usuarioBean.senha}"></h:inputSecret>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Confirma</td>
                                    <td><h:inputSecret id="senhaTeste" maxlength="10" size="15" value="#{usuarioBean.senhaTeste}"> </h:inputSecret>
                                    </td>
                                </tr>
                                <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                </tr>
                                <tr>
                                    <td>CPF:</td>
                                    <td><h:inputText id="cpf" maxlength="11" size="16" value="#{usuarioBean.cpf}"> </h:inputText>
                                        <b>&nbsp; OBS: Digite somente os números.</b>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Email:</td>
                                    <td><h:inputText id="email" maxlength="50" size="60" value="#{usuarioBean.email}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Logradouro:</td>
                                    <td><h:inputText id="logradouro" maxlength="50" size="50" value="#{usuarioBean.logradouro}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Número:</td>
                                    <td><h:inputText id="numero" maxlength="9" size="15" value="#{usuarioBean.numero}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Complemento:</td>
                                    <td><h:inputText id="complemento" maxlength="10" size="15" value="#{usuarioBean.complemento}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Bairro:</td>
                                    <td><h:inputText id="bairro" maxlength="30" value="#{usuarioBean.bairro}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Cidade:</td>
                                    <td><h:inputText id="cidade" maxlength="30" size="40" value="#{usuarioBean.cidade}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Estado:</td>
                                    <td><h:inputText id="estado" maxlength="2" size="4" value="#{usuarioBean.estado}"></h:inputText>
                                    </td>
                                </tr>
                                
                                <tr>
                                    <td>CEP:</td>
                                    <td><h:inputText id="cep" maxlength="9" size="14" value="#{usuarioBean.cep}"></h:inputText>
                                    </td>
                                </tr>
                                <tr>
                                    <td>&nbsp;</td>
                                    <td>&nbsp;</td>
                                </tr>
                                <tr>
                                    <td>Telefone:</td>
                                    <td><h:inputText id="telefone1numero" maxlength="13" size="16" value="#{usuarioBean.telefone1Numero}"></h:inputText>
                                        Descrição: <h:inputText id="telefone1descricao" maxlength="15" size="18" value="#{usuarioBean.telefone1Descricao}" ></h:inputText>
                                        <font color="#FF3300">&nbsp;*</font>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Telefone:</td>
                                    <td><h:inputText id="telefone2numero" maxlength="13" size="16" value="#{usuarioBean.telefone2Numero}"></h:inputText>
                                        Descrição: <h:inputText id="telefone2descricao" maxlength="15" size="18" value="#{usuarioBean.telefone2Descricao}" ></h:inputText>
                                        <font color="#FF3300">&nbsp;*</font>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Telefone:</td>
                                    <td><h:inputText id="telefone3numero" maxlength="13" size="16" value="#{usuarioBean.telefone3Numero}"></h:inputText>
                                        Descrição: <h:inputText id="telefone3descricao" maxlength="15" size="18" value="#{usuarioBean.telefone3Descricao}" ></h:inputText>
                                        <font color="#FF3300">&nbsp;*</font>
                                    </td>
                                </tr>
                                
                                <tr>
                                    <td>&nbsp;</td>
                                    <td><h:commandButton id="botaoCadastroUsuario"  action="#{usuarioBean.insereUsuario}" value="Cadastrar"></h:commandButton>
                                    </td>
                                </tr>
                                
                            </table>
                        </h:form>
                    </f:view>
                    <br><br><br><br><br><br>
                </div>
...

E fiz um bean na camada de logica para poder fazer a lógica de negócios.

Configurei o arquivo faces-config.xml da seguinte forma:

<?xml version='1.0' encoding='UTF-8'?>


<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config>
    <managed-bean>
        <managed-bean-name>usuarioBean</managed-bean-name>
        <managed-bean-class>logica.UsuarioBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
        <description>
            
        </description>
        <from-view-id>/cadastro_usuario.jsp</from-view-id>
        
        <navigation-case>
            
            <from-outcome>sucesso</from-outcome>
            <to-view-id>/index.jsp</to-view-id>
        </navigation-case>
        
        <navigation-case>
            
            <from-outcome>falha</from-outcome>
            <to-view-id>/erro.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    
  
</faces-config>

[color=red]O grande problema está que quando preencho o formulario e pressiono o botão nada acontece. Isso mesmo! A página não realiza nenhuma ação, continua na mesma página…[/color]

To meio desesperado com isso já…
Desde já agradeço por qualquer alma caridosa que possa vir a tentar me ajudar. :slight_smile:

10 Respostas

T

Cara, num sei se estou com muito sono, mas não vi nada de errado no seu código. posta por favor o código do seu ManagedBean por favor, alguém poderá te ajudar melhor…

O

Cadê o código do backbean?

Muito provavelmente o erro é no backbean.

mestrekame

Primeiramente gostaria de agradecer por estarem tentando ajudar :slight_smile:
Segue abaixo os ManagerBean

package logica;

import dominio.Endereco;
import dominio.Telefone;
import dominio.Usuario;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import persistencia.UsuarioDAO;

/**
 *
 * @author adjsilva
 */
public class UsuarioBean {
    
    private Usuario usuario;
    private Endereco endereco;
    private List<Telefone> listaTelefone;
    private Telefone telefone1;
    private Telefone telefone2;
    private Telefone telefone3;
    
    private String nome="";
    private String email="";
    private String login="";
    private String senha="";
    private int cpf = 0;
    private int pontuacao_positiva=0;
    private int pontuacao_negativa=0;
    
    private String logradouro="";
    private String complemento="";
    private String bairro="";
    private String cep="";
    private String cidade="";
    private String estado="";
    private int numero=0;
    
    private String telefone1Numero="";
    private String telefone1Descricao="";
    private String telefone2Numero="";
    private String telefone2Descricao="";
    private String telefone3Numero="";
    private String telefone3Descricao="";

    private String senhaParaTeste = "";
    
    //private final String[] ESTADOS = {"AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RS","RO","RR","SC","SP","SE","TO"};
    
    /** Creates a new instance of UsuarioBean */
    public UsuarioBean(){
                
        
    }
    
    public String getNome(){
        return nome;
    }
    
    public void setNome(String n) {
        this.nome = n;
    }
    
    
    public String getEmail() {
        return email;
    }
    
    public void setEmail(String e) {
        this.email = e;
    }
    
    public String getLogin() {
        return login;
    }
    
    public void setLogin(String l) {
        this.login = l;
    }
    
    public String getSenha() {
        return senha;
    }
    
    public void setSenha(String s) {
        this.senha = s;
    }
    
    public String getSenhaTeste() {
        return this.senhaParaTeste;
    }
    
    public void setSenhaTeste(String senha) {
        this.senhaParaTeste = senha;
    }
    
    public int getCpf() {
        return cpf;
    }
    
    public void setCpf(int c) {
        this.cpf = c;
    }
    
    public int getPontuacao_positiva() {
        return pontuacao_positiva;
    }
    
    public void setPontuacao_positiva(int pp) {
        this.pontuacao_positiva = pp;
    }
    
    public int getPontuacao_negativa() {
        return pontuacao_negativa;
    }
    
    public void setPontuacao_negativa(int pn) {
        this.pontuacao_negativa = pn;
    }
   
    
    /***************telefones*******************/
    
    //telefone 1
    public String getTelefone1Numero(){
        return telefone1Numero;
    }
    
    public void setTelefone1Numero(String n){
        this.telefone1Numero = n;
    }
    
    public String getTelefone1Descricao(){
        return telefone1Descricao;
    }
    
    public void setTelefone1Descricao(String d){
        this.telefone1Descricao = d;
    }
    
    //telefone 2
    public String getTelefone2Numero(){
        return telefone2Numero;
    }
    
    public void setTelefone2Numero(String n){
        this.telefone2Numero = n;
    }
    
    public String getTelefone2Descricao(){
        return telefone2Descricao;
    }
    
    public void setTelefone2Descricao(String d){
        this.telefone2Descricao = d;
    }
    
    //telefone 3
    public String getTelefone3Numero(){
        return telefone3Numero;
    }
    
    public void setTelefone3Numero(String n){
        this.telefone3Numero = n;
    }
    
    public String getTelefone3Descricao(){
        return telefone3Descricao;
    }
    
    public void setTelefone3Descricao(String d){
        this.telefone3Descricao = d;
    }
    
    /****************campos endereco******************/
    public String getLogradouro() {
        return logradouro ;        
    }
    
    public void setLogradouro(String lograd) {
        this.logradouro = lograd;
    }
    
    public String getComplemento() {
        return complemento;
    }
    
    public void setComplemento(String comp) {
        this.complemento = comp;
    }
    
    public String getBairro() {
        return bairro;
    }
    
    public void setBairro(String b) {
        this.bairro = b;
    }
    
    public String getCep() {
        return cep;
    }
    
    public void setCep(String c) {
        this.cep = c;
    }
    
    public String getCidade() {
        return cidade;
    }
    
    public void setCidade(String c) {
        this.cidade = c;
    }
    
    public String getEstado() {
        return estado;
    }
    
    public void setEstado(String e) {
        this.estado = e;
    }
    
    public int getNumero() {
        return numero;
    }
    
    public void setNumero(int n) {
        this.numero = n;
    }
    
    
    /*****fim campos endereco*********/
    
    
    
   private void adicionaEnderecos(){
        endereco = new Endereco();
        
        endereco.setBairro(this.bairro);
        endereco.setCep(this.cep);
        endereco.setCidade(this.cidade);
        endereco.setComplemento(this.complemento);
        endereco.setEstado(this.estado);
        endereco.setLogradouro(this.logradouro);
        endereco.setNumero(this.numero);
   }
    
    private void adicionaTelefonesLista() {
        listaTelefone = new ArrayList(3);
        
        telefone1 = new Telefone();
        telefone2 = new Telefone();
        telefone3 = new Telefone();
        
        
        this.telefone1.setNumero(this.telefone1Numero);
        this.telefone1.setDescricao(this.telefone1Descricao);
        this.telefone2.setNumero(this.telefone2Numero);
        this.telefone2.setDescricao(this.telefone2Descricao);
        this.telefone3.setNumero(this.telefone3Numero);
        this.telefone3.setDescricao(this.telefone3Descricao);
        
        this.listaTelefone.add(this.telefone1);
        this.listaTelefone.add(this.telefone2);
        this.listaTelefone.add(this.telefone3);
    }
    
    private List<Telefone> retornaListaTelefones(){
        this.adicionaTelefonesLista();
        return this.listaTelefone;
    }
    
    private boolean verificaCamposObrigatorios(){
        
        FacesContext facesContext = FacesContext.getCurrentInstance();
        FacesMessage fm = new FacesMessage();
        
        if(this.getNome().equals("")){ //campo usuario vazio
            fm.setDetail("O campo usuário deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getLogin().equals("")){ //campo login vazio
            fm.setDetail("O campo Login deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            return false;
        }
        
        if(this.getSenha().equals("")){ //campo senha vazio
            fm.setDetail("O campo senha deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            return false;
        }
        
        if(!this.getSenhaTeste().equals(this.getSenha())){ //senhas digitas se diferem
            fm.setDetail("As senha digitadas são diferentes!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getCpf() == 0){ //campo cpf vazio
            fm.setDetail("O campo CPF deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getEmail().equals("")) { //campo email vazio
            fm.setDetail("O campo email deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getLogradouro().equals("")){ //campo logradouro vazio
            fm.setDetail("O campo logradouro deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getNumero() == 0) { //campo numero vazio
            fm.setDetail("O campo numero deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getComplemento().equals("")){ //campo complemento vazio
            fm.setDetail("O campo complemento deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getBairro().equals("")){ //campo bairro vazio
            fm.setDetail("O campo bairro deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getCidade().equals("")) { //campo cidade vazio
            fm.setDetail("O campo cidade deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getEstado().equals("")) { //campo estado vazio
            fm.setDetail("O campo estado deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        if(this.getCep().equals("")){ //campo cep vazio
            fm.setDetail("O campo CEP deve ser preechido!");            
            facesContext.addMessage("formCadastroUsuario", fm);
            
            return false;
        }
        
        return true;
    }
    
    private void adicionaCamposObjetoUsuario(){
        this.usuario = new Usuario();
        
        this.usuario.setCpf(this.cpf);
        this.usuario.setEmail(this.email);
        
        this.adicionaEnderecos(); //Adiciona os campos referentes ao endereço ao objeto "endereco" 
        this.usuario.setEndereco(this.endereco);
        
        this.usuario.setLista_de_telefones(this.retornaListaTelefones()); 
        
        this.usuario.setLogin(this.login);
        this.usuario.setNome(this.nome);
        this.usuario.setPontuacao_negativa(this.pontuacao_negativa);
        this.usuario.setPontuacao_positiva(this.pontuacao_positiva);
        this.usuario.setSenha(this.senha);        
    
    }
    
    
    public String insereUsuario() {
        
        FacesContext facesContext = FacesContext.getCurrentInstance();
        FacesMessage fm = new FacesMessage();
                
        if(this.verificaCamposObrigatorios()) {
            
            this.adicionaCamposObjetoUsuario();
            
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            
            if(usuarioDAO.insereUsuario(this.usuario))
                return "sucesso";
            else {
                fm.setDetail("Não foi possível inserir o usuário!");            
                facesContext.addMessage("formCadastroUsuario", fm);
                
                return "falha";
            }    
            
        }
        
        return "falha";
    }
}
mestrekame

manager bean é a mesma coisa que backbean?

mestrekame

Estou até hoje agarrado nisso aqui se alguma alma caridosa souber a solução por favor me avise.

Abraço para todos

davidbuzatto

Já tive um problema assim… Quando eu enviava o formulário o mesmo passava pela validação, que invalidava um campo. Como eu não estava usando a tag message para exibir a mensagem de erro do camp oem questão não aparecia nenhum erro.

Use a tag message p/ exibir o possível erro do seu formulário.

Até mais!

mestrekame

Olá David
A tag message que vc está falando é diferente desta que está no meu codigo?

Quando a validação, me parece que ele nem chega a se comunicar com o XML , coisa louca …:frowning:

Mauricio_Linhares

Opa velho, sem querer ser chato mas já sendo, esse seu backing bean tá bizonho, os seus métodos get/set deveriam estar acessando os objetos “Usuario” e “Telefone” diretamente, e não esse monte de propriedades que você criou, dê uma ajeitada nisso.

A validação de campos obrigatórios pode ser feita automaticamente pelo JSF colocando o atributo “required” como “true” em todas as tags de formulário que são obrigatórias.

Sobre o seu problema, ele não faz nada? Nem dá post no formulário?

rbroz85

return (ok ? “sucesso” , “falha”);

tu ta retornando sucesso em algum lugar?
eu nao achei!
se tiver…

tenta minimizar o problema… faça algo mais simples…

mestrekame

Maurício, o codigo ta um pouco bagunçado mesmo porque eu comecei a tentar um monte de coisa p ver se resolvia isso. Infelismente comecei a aprender JSF a alguns dias e ainda não tenho muita noção de como fazer as coisas, essa propriedade mesmo (required) eu nao conhecia, mas se eu usar essa propriedade como eu envio para o usuario a mensagem correta?
Respondendo a sua pergunta, a pagina não está dando POST…

abraço a todos

Criado 3 de julho de 2007
Ultima resposta 11 de jul. de 2007
Respostas 10
Participantes 6