JSF 2.2.1 + Primefaces

[code]Meu Nome é Velloso e estou trabalhando no desenvolvimento de um sistema de conclusão de curso que irá ser usado numa distribuidora de energia e descidi usar esse framework ( Primefaces com JSF) e deparei com algumas dificuldades ainda na parte de visão no uso de alguns componentes. O componente que estou tendo dificuldades é o WIZARD. Criei o XHTL, a classe de controller e a classe de dominio de um usuário. Quando coloco para depurar com o check point na classe de dominio, no metodo do setMatricula, percebo que ele esta null. Não estou conseguindo setar na variável, portanto não consigo recupera-la para visualizar na confirmação do dados antes de salvar no banco. Peço por gentileza que me ajude, caso alguem tenha deparado com essa problematica. Muitissimo Obrigado! O codigo estará abaixo para avaliação.

XHTML

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

<h:head>
    <!--<title>Acesso SGIO</title>-->
    <!--<link type="text/css" rel="stylesheet" href="jquery-ui-1.8.16.custom.css" />-->      
    <title>Bem vindo ao SGIO!</title>

</h:head>
<!--<h:body style="background-image: url(images/logoEletrobras.png)">-->




<h:body style="background-image:url(images/loginAcessoPrincipal6.png) ;background-position: 55% 8%;background-repeat: no-repeat">

    <center>
        <h:outputText value="Usuário ou senha incorretos!" rendered="#{param.erro}" style="color: darkred"/>
    </center>
    <form action="j_spring_security_check" method="post" style="padding-left: 1000px; padding-top: -10px">
        <h:panelGrid columns="2" cellpadding="2">



            <h:outputLabel for="j_username" value="Login" style="margin-left: 30px"/>
            <h:inputText id="j_username" required="true"/>
            <h:outputLabel for="j_password" value="Senha " style="margin-left: 30px"/>
            <h:inputSecret id="j_password" required="true"/>


        </h:panelGrid>
        <h:panelGrid columns="2" cellpadding="2" style="margin-left: 83px">
            <h:commandButton value="Login"/>
            <p:commandButton value="Cadastro" onclick="dlg3.show()" type="button" style="font-size: 11px; border: #030303; color: #030303 "/> 
        </h:panelGrid>

        <p:dialog header="Cadastro de Usuário" widgetVar="dlg3" showEffect="bounce"  modal="true" hideEffect="explode" height="360" width="500">  
            <h:form>  

                <p:wizard widgetVar="homePageAcesso" 
                          flowListener="#{userWizardController.onFlowProcess}"                              
                          style="font-size: 12px">  
                          <!--nextLabel="Avançar"
                          backLabel="Voltar"-->
                    <p:tab id="pessoal" title="Pessoal" >  

                        <p:panel header="Detalhes Pessoais" style="font-size: 12px">  

                            <h:messages errorClass="error"/>  

                            <p:messages id="msgs" showDetail="true"/>

                            <h:panelGrid columns="2" columnClasses="label, value" styleClass="grid" style="font-size: 15px">  

                                <h:outputText value="Matrícula: * " style="padding-left: 28px"/>
                                <p:inputMask mask="9999-9" value="#{userWizardController.user.setMatricula}" size="7"/>

                                <h:outputLabel for="departamento" value="Departamento: *"/>
                                <h:selectOneMenu id="cidades" value="#{userWizardController.user.cidades}">
                                    <f:selectItem itemLabel="DOD-SM" itemValue="dod-sm"/>
                                    <f:selectItem itemLabel="DID-SMI" itemValue="did-smi"/>                            
                                </h:selectOneMenu> 

                                
                                <h:outputText value="CPF: * " style="padding-left: 63px"/>
                                <p:inputMask mask="999.999.999-99" value="#{userWizardController.user.cpf}" size="15"/>
                               
                                <h:outputText value="Nome: *" style="padding-left: 50px"/>  
                                <p:inputText required="true" label="Nome"  
                                             value="#{userWizardController.user.nome}"
                                             size="35"/>                          

                                <h:outputText value="Ir para o último: " />  
                                <h:selectBooleanCheckbox value="#{userWizardController.skip}" />  
                            </h:panelGrid>  
                        </p:panel>  
                    </p:tab>  



                    <p:tab id="contact" title="Contato">  
                        <p:panel header="Informações de Contato" style="font-size: 12px">  

                            <h:messages errorClass="error"/>  

                            <h:panelGrid columns="2" columnClasses="label, value">  
                                <h:outputText value="Email: *" />  
                                <p:inputText required="true" label="Email"  
                                             value="#{userWizardController.user.email}" />  

                                <h:outputText value="Telefone: " />  
                                <p:inputText value="#{userWizardController.user.telefone}"/>  

                                <h:outputText value="Informação Adicional: " />  
                                <p:inputText value="#{userWizardController.user.info}"/>

                                <h:outputText value="Ir para o último: " />  
                                <h:selectBooleanCheckbox value="#{userWizardController.skip}" />  

                            </h:panelGrid>  
                        </p:panel>  
                    </p:tab>

                    <p:tab id="cadastroLogin" title="Login/Senha" >  
                        <p:panel header="Cadastramento de Login e Senha" style="font-size: 12px" >  

                            <h:messages errorClass="error"/> 

                            <h:panelGrid columns="2" columnClasses="label, value" styleClass="grid" style="font-size: 15px; margin-left: 90px"> 
                                <h:outputLabel for="c_username" value="Login" style="margin-left: 30px"/>
                                <h:inputText id="c_username" required="true"/>

                                <h:outputLabel value="Senha" for="txtSenha" style="margin-left: 30px"/>  
                                <p:password id="txtSenha" value="#{userWizardController.user.password}" minLength="4" promptLabel="Digite uma senha segura" goodLabel="Boa" weakLabel="Razoável" strongLabel="Excelente" feedback="true" required="true"  style="width: 150px"/>  
                                <p:message for="txtSenha"/> 

                            </h:panelGrid>
                        </p:panel>  
                    </p:tab>  

                    <p:tab id="confirm" title="Confirmação">  
                        <p:panel header="Confirmação dos Dados" style="font-size: 12px">  

                            <p:growl id="growl" sticky="true" showDetail="true"/>                           



 
 


 
 

                            <h:panelGrid id="confirmation" columns="6">  
                                <h:outputText value="Matricula: " />  
                                <h:outputText value="#{userWizardController.user.matricula}" />  

                                <h:outputText value="Sobrenome: " />  
                                <h:outputText value="#{userWizardController.user.cidades}"/>  

                                <h:outputText value="Idade: " />  
                                <h:outputText styleClass="outputLabel"  
                                              value="#{userWizardController.user.cpf}" />  

                                <h:outputText value="Rua: " />  
                                <h:outputText styleClass="outputLabel"  
                                              value="#{userWizardController.user.nome}" />  

                                <h:outputText value="CEP: " />  
                                <h:outputText styleClass="outputLabel"  
                                              value="#{userWizardController.user.email}" />  

                                <h:outputText value="Cidade: " />  
                                <h:outputText styleClass="outputLabel"  
                                              value="#{userWizardController.user.telefone}" />  

                                <h:outputText value="Email: " />  
                                <h:outputText styleClass="outputLabel"  
                                              value="#{userWizardController.user.info}" />  

                                <h:outputText value="Telefone " />  
                                <h:outputText styleClass="outputLabel"  
                                              value="#{userWizardController.user.login}"/>  

                                <h:outputText value="Info: " />  
                                <h:outputText styleClass="outputLabel"  
                                              value="#{userWizardController.user.password}" />  

                               
                            </h:panelGrid>  

                            <p:commandButton value="Submit" update="growl"   
                                             actionListener="#{userWizardController.save}"/>  

                        </p:panel>   
                    </p:tab>  

                </p:wizard>  

                <p:ajaxStatus>  
                    <f:facet name="start">  
                        <h:graphicImage value="../images/ajaxloading.gif" />  
                    </f:facet>  

                    <f:facet name="complete">  
                        <h:outputText value="" />  
                    </f:facet>  
                </p:ajaxStatus>  

            </h:form>  
        </p:dialog>                      
    </form>

</h:body>

[/code]

Controller

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.sgio.controller;

import br.com.sgio.domain.User;
import java.awt.event.ActionEvent;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.FlowEvent;

@ManagedBean (name=“userWizardController”)
@SessionScoped

public class UserWizardController {
         
    private User user = new User();
    
      
    private boolean skip;  
    
     private static Logger logger = Logger.getLogger(UserWizardController.class.getName());

       
    public User getUser() {
        
        return user;  
    }  
  
    public void setUser(User user) {  
        this.user = user;  
    }  
      
    public void save(ActionEvent actionEvent) {  
        //Persist user  
          
        FacesMessage msg = new FacesMessage("Successful", "Welcome :" + user.getMatricula());  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }  
      
    public boolean isSkip() {  
        return skip;  
    }  
  
    public void setSkip(boolean skip) {  
        this.skip = skip;  
    }  
      

    public String onFlowProcess(FlowEvent event) {
        
      logger.info("Current wizard step:" + event.getOldStep());  
      logger.info("Next step:" + event.getNewStep());  

// System.out.println(this.isSkip());
if(skip) {
skip = false; //reset in case user go back
return “confirm”;
}
else {
return event.getNewStep();
}
}

}
[/code]

Classe de Dominio

[code]package br.com.sgio.domain;

/**
*

  • @author velloso
    */
    public class User {

    private Integer matricula;
    private String cidades;
    private String cpf;
    private String nome;
    private String email;
    private String telefone;
    private String info;
    private String login;
    private String password;

    /**

    • @return the matricula
      */
      public Integer getMatricula() {
      return matricula;

    }

    /**

    • @param matricula the matricula to set
      */
      public void setMatricula(Integer matricula) {
      this.matricula = matricula;
      }

    /**

    • @return the cidades
      */
      public String getCidades() {
      return cidades;
      }

    /**

    • @param cidades the cidades to set
      */
      public void setCidades(String cidades) {
      this.cidades = cidades;
      }

    /**

    • @return the cpf
      */
      public String getCpf() {
      return cpf;
      }

    /**

    • @param cpf the cpf to set
      */
      public void setCpf(String cpf) {
      this.cpf = cpf;
      }

    /**

    • @return the nome
      */
      public String getNome() {
      return nome;
      }

    /**

    • @param nome the nome to set
      */
      public void setNome(String nome) {
      this.nome = nome;
      }

    /**

    • @return the email
      */
      public String getEmail() {
      return email;
      }

    /**

    • @param email the email to set
      */
      public void setEmail(String email) {
      this.email = email;
      }

    /**

    • @return the telefone
      */
      public String getTelefone() {
      return telefone;
      }

    /**

    • @param telefone the telefone to set
      */
      public void setTelefone(String telefone) {
      this.telefone = telefone;
      }

    /**

    • @return the info
      */
      public String getInfo() {
      return info;
      }

    /**

    • @param info the info to set
      */
      public void setInfo(String info) {
      this.info = info;
      }

    /**

    • @return the login
      */
      public String getLogin() {
      return login;
      }

    /**

    • @param login the login to set
      */
      public void setLogin(String login) {
      this.login = login;
      }

    /**

    • @return the password
      */
      public String getPassword() {
      return password;
      }

    /**

    • @param password the password to set
      */
      public void setPassword(String password) {
      this.password = password;
      }

}
[/code]

Prolemática : Não consigo setar a variável para utilizá-la depois na confirmação

tenta trocar

#{userWizardController.user.setMatricula}

por

#{userWizardController.user.matricula}

Lucas, Valeu pela dica, mais esse set que vc pediu para trocar já foi um teste para ver se conseguia setar essa variável. Ela esta como vc sugeriu colocar no meu projeto e mesmo assim não funcionou. Não sei se vc percebeu mais com relação as outras variáveis ela está sem o set e mesmo assim não consigo. [size=18]Vc têm outra sugestão que possa me ajudar?[/size]

Aparentemente a única coisa errada é mesmo o setMatricula, qual o erro que aparece quando você chama a pagina?

Ele não trás erro , só a variavel quando debugo percebo que ela esta null ao seta-la, e assim, não consigo recuperar seu valor para visualiza-la.

Valeu mais uma vez pela atenção!

Teu campo matricula é Integer
teu inputMask ta assim
<p:inputMask mask=“9999-9” value="#{userWizardController.user.setMatricula}" size=“7”/>
Quando ele tenta converter um valor qualquer com essa mascara (Ex.: 1234-5) para um numero inteiro ele não consegue por causa do traço -

  1. Muda tua matricula pra String
    ou
  2. Tira o - do teu inputmask
    ou
  3. Cria um FacesConverter pra tirar esse traço na hora de salvar o valor

Valeu amigo!

                 Vou tentar, mais colocando ela como string não acredito não poder validar essa matrícula, acho que a solução sera converter aquele traço da máscara.

Obrigadão! Te falo assim que fizer!