Criar esse projeto para praticar, no entanto não estou conseguindo pegar o valor que selecione no selectOneListBox, o valor fica nulo na classe pessoaJuridicaBean. Pesquisei no site do primeFaces e está igual, incluse aos exemplos das aulas aqui no aluno. Poderia me dar uma força? Segue o código do xhtml:
O valor do tipo da pessoa que não consigo pegar:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<h:form id="formInformacaoGeral">
<p:messages id="messages" />
<p:panelGrid columns="2" id="dadosGerais">
<p:outputLabel value="Status" for="ativa"/>
<p:selectBooleanButton value="#{pessoaJuridicaBean.pessoa.ativa}" required="true" onLabel="Ativa" offLabel="Inativa" style="width:60px" id="ativa" disabled="true" />
<p:outputLabel for="tipo" value="Tipo Pessoa:" />
<p:selectOneListbox id="tipo" value="#{pessoaJuridicaBean.tipoRelacionamentoPessoa}">
<f:selectItem itemLabel="Cliente" itemValue="0" />
<f:selectItem itemLabel="Fornecedor" itemValue="1" />
</p:selectOneListbox>
<p:outputLabel value="Id:" for="idEmpresa"/>
<p:inputText id="idEmpresa" value="#{pessoaJuridicaBean.pessoa.id}" required="true" disabled="true" />
<p:outputLabel value="Nome Fantasia:" for="nomeFantasia"/>
<p:inputText id="nomeFantasia" value="#{pessoaJuridicaBean.pessoa.nomeFantasia}" required="true" requiredMessage="Nome fantasia obrigatório"
validatorMessage="Nome fantasia não pode ser superior a 60 caracteres." size="60">
<f:validateLength maximum="60"/>
<f:ajax event="blur" render="messages"/>
</p:inputText>
<p:outputLabel value="Razão Social:" for="razaoSocial"/>
<p:inputText id="razaoSocial" value="#{pessoaJuridicaBean.pessoa.razaoSocial}" required="true" requiredMessage="Razão social obrigatório"
validatorMessage="Razão social não pode ser superior a 60 caracteres." size="60">
<f:validateLength maximum="60"/>
<f:ajax event="blur" render="messages"/>
</p:inputText>
<p:outputLabel value="CNPJ:" for="cnpj"/>
<p:inputMask id="cnpj" mask="99.999.999/9999-99" value="#{pessoaJuridicaBean.pessoa.cnpj}" validator="#{pessoaJuridicaBean.validarCampoNumerico}"
rendered="true" required="true" requiredMessage="Cnpj e obrigatório">
<f:ajax event="keypress" render="messages"/>
</p:inputMask>
<p:outputLabel value="Inscrição Estadual" for="ie"/>
<p:inputText mask="" value="#{pessoaJuridicaBean.pessoa.ie}" validator="#{pessoaJuridicaBean.validarCampoNumerico}" id="ie" required="true">
<f:ajax event="keypress" render="messages"/>
</p:inputText>
</p:panelGrid>
</h:form>
</html>
Código da classe pessoaJuridicaBean:
package br.com.mecanicaApoloSistem.bean;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import br.com.mecanicaApoloSistem.dao.LogradouroDAO;
import br.com.mecanicaApoloSistem.dao.PessoaJuridicaDAO;
import br.com.mecanicaApoloSistem.dao.TelefoneDAO;
import br.com.mecanicaApoloSistem.dataModel.PessoaJuridicaDataModel;
import br.com.mecanicaApoloSistem.model.Logradouro;
import br.com.mecanicaApoloSistem.model.Municipio;
import br.com.mecanicaApoloSistem.model.PessoaJuridica;
import br.com.mecanicaApoloSistem.model.Telefone;
import br.com.mecanicaApoloSistem.model.Tipo;
import br.com.mecanicaApoloSistem.util.FacesUtil;
@Controller
@ViewScoped
public class PessoaJuridicaBean extends FacesUtil implements Serializable {
private static final long serialVersionUID = 4134273637579805759L;
private PessoaJuridica pessoa = new PessoaJuridica();
private Logradouro logradouro = new Logradouro();
private Telefone telefone = new Telefone();
@Autowired
private PessoaJuridicaDAO pessoaDAO;
@Autowired
private LogradouroDAO logradouroDAO;
@Autowired
private TelefoneDAO telefoneDAO;
@Autowired
private PessoaJuridicaDataModel pessoaJuridicaDataModel;
private Integer tipoRelacionamentoPessoa;
public PessoaJuridica getPessoa() {
return pessoa;
}
public void setPessoa(PessoaJuridica pessoa) {
this.pessoa = pessoa;
}
public void validarCampoNumerico(FacesContext fc, UIComponent component, Object value) throws ValidatorException {
try{
//Long.parseLong(value.toString());
System.out.println(value.toString());
}catch (Exception ex){
throw new ValidatorException(new FacesMessage("CNPJ ou IE aceitam apenas números."));
}
}
@Transactional
public void salvar(){
this.pessoa.setAtiva(true);
if(this.pessoa.getId() == null){
try{
if(getTipoRelacionamentoPessoa().equals(Tipo.CLIENTE)){
pessoa.setTipo(Tipo.CLIENTE);
}else{
pessoa.setTipo(Tipo.FORNECEDOR);
}
pessoaDAO.salvar(pessoa);
if(pessoa.getListaLogradouros() != null){
for(Logradouro l: pessoa.getListaLogradouros()){
salvarLogradouro(l);
}
}
if(pessoa.getTelefones() != null){
for(Telefone t: pessoa.getTelefones()){
salvarTelefone(t);
}
}
this.info("Pessoa cadastrada com sucesso");
}catch (Exception ex){
this.error("Problemas ao salvar os dados da empresa. Detalhes: " + ex);
}
}else{
try{
pessoaDAO.atualizar(pessoa);
for(Logradouro l: pessoa.getListaLogradouros()){
salvarLogradouro(l);
}
for(Telefone t: pessoa.getTelefones()){
salvarTelefone(t);
}
this.info("Pessoa editada com sucesso");
}catch (Exception ex){
this.error("Problemas ao atualizar os dados da empresa. Detalhes: " + ex);
}
}
pessoa = new PessoaJuridica();
}
@Transactional
public void salvarLogradouro(Logradouro logradouro){
try{
if(logradouro.getId() == null){
logradouroDAO.salvar(logradouro);
}
}catch (Exception ex){
this.error("Problemas ao salvar o logradourdo: " + ex);
}
}
public void adicionarLogradouro(Municipio municipio){
logradouro.setMunicipio(municipio);
logradouro.setPessoa(pessoa);
this.pessoa.adicionarLogradouro(logradouro);
logradouro = new Logradouro();
}
public void adicionarTelefone(){
this.telefone.setPessoa(this.pessoa);
this.pessoa.adicionarTelefone(this.telefone);
this.telefone = new Telefone();
}
@Transactional
public void salvarTelefone(Telefone telefone){
try{
if(telefone.getId() == null){
telefoneDAO.salvar(telefone);
}
}catch (Exception ex){
this.error("Problemas ao salvar o telefone: " + ex);
}
}
@Transactional
public void removerTelefone(Telefone telefone){
try{
pessoa.removerTelefone(telefone);
telefoneDAO.remover(telefone);
}catch (Exception ex){
this.error("Problemas ao remover o telefone: " + ex);
}
}
@Transactional
public void removerLogradouro(Logradouro logradouro){
try{
pessoa.removerLogradouro(logradouro);
logradouroDAO.remover(logradouro);
}catch (Exception ex){
this.error("Problemas ao remover o logradouro");
}
}
@Transactional
public void carregar(PessoaJuridica pessoaJuridica){
try{
this.pessoa = pessoaDAO.carregar(pessoaJuridica);
tipoRelacionamentoPessoa = pessoa.getTipo().ordinal();
}catch (Exception ex){
this.error("Problemas ao carregar a empresa. Detalhes " + ex);
}
}
@Transactional
public void remover(PessoaJuridica pessoaJuridica){
try{
pessoaDAO.remover(pessoaJuridica);
this.pessoa = new PessoaJuridica();
}catch (Exception ex){
this.error("Problemas ao remover a empresa. Detalhes " + ex);
}
}
public Logradouro getLogradouro() {
return logradouro;
}
public void setLogradouro(Logradouro logradouro) {
this.logradouro = logradouro;
}
public List<Logradouro> getListaLogradouro() {
return this.pessoa.getListaLogradouros();
}
public List<Telefone> getListaTelefone(){
return this.pessoa.getTelefones();
}
public Telefone getTelefone() {
return telefone;
}
public void setTelefone(Telefone telefone) {
this.telefone = telefone;
}
public PessoaJuridicaDataModel getPessoaJuridicaDataModel() {
return pessoaJuridicaDataModel;
}
public void setPessoaJuridicaDataModel(PessoaJuridicaDataModel pessoaJuridicaDataModel) {
this.pessoaJuridicaDataModel = pessoaJuridicaDataModel;
}
public Integer getTipoRelacionamentoPessoa() {
return tipoRelacionamentoPessoa;
}
public void setTipoRelacionamentoPessoa(Integer tipoRelacionamentoPessoa) {
this.tipoRelacionamentoPessoa = tipoRelacionamentoPessoa;
}
}