[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;
}
-
@return the matricula
}
[/code]
Prolemática : Não consigo setar a variável para utilizá-la depois na confirmação