Populando bean JSF 2

2 respostas
G

Boa tarde a todos, alguém sabe me dizer pq quando clico no botão gravar os meus beans não estão sendo populados com os valores preenchidos pelo usuário no form! Alguém sabe me dizer o que pode ser?
Obrigado a todos que puderem ajudar.

<ui:composition template="/paginas/principal.xhtml">	
		<ui:define name="conteudo">
			<p:tabView>
				<!-- INÍCIO DA TAB DE CADASTRO -->
			  	<p:tab title="Cadastro" id="tabCadastroCliente">
					<h:form prependId="false">
						<h:panelGrid columns="2" cellspacing="1">
							<h:selectOneRadio id="tipoPessoa" immediate="true" valueChangeListener="#{pessoaBean.trocarMascara}" > 
								<f:selectItems value="#{pessoaBean.tpPessoa}" />
								<f:ajax  event="change" render="escondeForm" />
							</h:selectOneRadio>
						</h:panelGrid>						
						<p:outputPanel id="escondeForm">
							<p:outputPanel id="formCadastroPessoa" rendered="#{pessoaBean.itemSelecionado.getValue() != null}">
								<p:messages id="menssagens" showDetail="true"/>		  
									<p:ajaxStatus style="width:16px;height:16px;">
										<f:facet name="start">
											<h:graphicImage value="imagens/loading.gif" />
										</f:facet>
										<f:facet name="complete">
											<h:outputText value="" />
										</f:facet>
									</p:ajaxStatus>						
									<h:panelGrid columns="5" cellpadding="2" >
										<h:outputLabel id="labelCliNome" value="Nome: *"/>
										<h:outputLabel id="labelCpfCnpj" value="CPF/CNPJ: *"/>
										<h:outputLabel id="labelCliTel" value="Telefone: *"/>
										<h:outputLabel id="labelCliCel" value="Celular: *"/>										
										<h:outputLabel id="labelDtNasc" value="Data Nasc.: "/>
										<p:inputText id="pesNome" maxlength="50" size="35" value="#{pessoaBean.pessoa.nome}" required="true" />
										<p:inputMask mask="#{pessoaBean.mascaraCpfCnpj}" id="pesCpfCnpj" size="20" value="#{pessoaBean.cpfcnpj}" required="true"/>
										<p:inputMask mask="([telefone removido]" id="pesTel" size="10" value="#{pessoaBean.tel}"/>
										<p:inputMask mask="([telefone removido]" id="pesCel" size="10" value="#{pessoaBean.cel}" required="#{pessoaBean.validaTelefones()}"/>
										<p:calendar id="cliDtNasc" pattern="dd/MM/yyyy" mode="popup" value="#{clienteBean.cliente.dtNascimento}"/>						
									</h:panelGrid>										  		
									<h:panelGrid columns="5" cellpadding="2">
										<h:outputLabel id="labelLogradouro" value="Logradouro: *"/>
								  		<h:outputLabel id="labelNrLogradouro" value="Nro:  *"/>
								  		<h:outputLabel id="labelCep" value="CEP: *"/>
								  		<h:outputLabel id="labelBairro" value="Bairro: *"/>
										<h:outputLabel id="labelCidade" value="Cidade: *"/>						  								  		
						  		  		<p:inputText id="pesLogradouro" required="true" maxlength="50" size="35" value="#{pessoaBean.pessoa.logradouro}" />
								  		<p:inputText id="pesNrLogradouro" required="true" maxlength="6" size="5" value="#{pessoaBean.pessoa.nrLogradouro}"/>
								  		<p:inputMask mask="99.999-999" id="pesCep" required="true" size="10" value="#{pessoaBean.cep}" />
								  		<p:inputText id="pesBairro" required="true" maxlength="35" size="25" value="#{pessoaBean.pessoa.bairro}"/>
										<p:inputText id="pesCidade" required="true" maxlength="35" size="25" value="#{pessoaBean.pessoa.cidade}" />						  		 										
									</h:panelGrid>									  		
									<h:panelGrid columns="5" cellpadding="2">
										<h:outputLabel id="labelEstado" value="Estado: *"/>
										<h:outputLabel id="labelIE" value="Insc. Estadual: *"/>
										<h:outputLabel id="labelContato" value="Contato: "/>
										<h:outputLabel id="labelCompra" value="Contato Compra: "/>
										<h:outputLabel id="labelPrincipal" value="Contato Principal: "/>								
										<h:selectOneMenu id="pesEstado" required="true" immediate="true" value="#{pessoaBean.pessoa.estado}" valueChangeListener="#{clienteBean.aposEstadoSelecionado}">
											<f:selectItems value="#{pessoaBean.estados}" />
											<f:ajax event="change" render="cliIE"/>											
										</h:selectOneMenu>	
										<p:inputMask mask="#{clienteBean.mascaraIE}" id="cliIE" required="true" size="22" value="#{clienteBean.cliente.ie}"/>
										<p:inputText id="cliContato" maxlength="" size="" value="#{clienteBean.cliente.contato}"/>
										<p:inputText id="cliCompra" maxlength="" size="" value="#{clienteBean.cliente.contatoCompra}"/>
										<p:inputText id="cliPrincipal" maxlength="" size="" value="#{clienteBean.cliente.contatoPrincipal}"/>			  		
								  	</h:panelGrid>									
									<h:panelGrid columns="3" cellpadding="2">
										<h:outputLabel id="labelPesEmail" value="E-Mail: "/>
										<h:outputLabel id="labelEmailCompra" value="E-Mail Compra: *"/>
										<h:outputLabel id="labelEmailPrincipal" value="E-Mail Principal: *"/>
										<p:inputText id="pesEmail" maxlength="80" size="35" value="#{pessoaBean.pessoa.email}"/>
										<p:inputText id="cliEmailCompra" maxlength="80" size="35" value="#{clienteBean.cliente.emailCompra}"/>
										<p:inputText id="cliEmailPrincipal" maxlength="80" size="35" value="#{clienteBean.cliente.emailPrincipal}"/>
									</h:panelGrid>		
							</p:outputPanel>		
							<p:commandButton id="btCadastrar" value="Gravar" actionListener="#{clienteBean.gravar}"  />							
						</p:outputPanel>	
					</h:form>				
				</p:tab>
				
				<!-- INÍCIO DA TAB DE EDIÇÃO -->
				<p:tab title="Edição" id="tabEditarCliente">
				</p:tab>
				
			 </p:tabView>
		</ui:define>
	</ui:composition>
@ManagedBean(name="pessoaBean")
@RequestScoped
public class PessoaMB {
	
	private Pessoa pessoa = new Pessoa();
	private SelectItem itemSelecionado;
	private List<SelectItem> tpPessoa;
	private String mascaraCpfCnpj;
	private List<SelectItem> estados;
	//variáveis para receber os valores com máscara
	private String cpfcnpj;
	private String tel;
	private String cel;
	private String cep;
	

	public PessoaMB(){
		//pessoa = new Pessoa();
		itemSelecionado = new SelectItem();
		tpPessoa = new ArrayList<SelectItem>();
		tpPessoa.add(new SelectItem("PF", "Pessoa Física"));
		tpPessoa.add(new SelectItem("PJ", "Pessoa Jurídica"));
		estados = new ArrayList<SelectItem>();
		estados.add(new SelectItem("Selecione", "Selecione"));
		estados.add(new SelectItem("AC", "Acre - AC"));
		estados.add(new SelectItem("AL", "Alagoas - AL"));
		estados.add(new SelectItem("AP", "Amapá - AP"));
		estados.add(new SelectItem("AM", "Amazonas - AM"));
		estados.add(new SelectItem("BA", "Bahia - BA"));
		estados.add(new SelectItem("CE", "Ceará - CE"));
		estados.add(new SelectItem("DF", "Distrito Federal - DF"));
		estados.add(new SelectItem("ES", "Espirito Santo - ES"));
		estados.add(new SelectItem("GO", "Goias - GO"));
		estados.add(new SelectItem("MA", "Maranão - MA"));
		estados.add(new SelectItem("MS", "Mato Grosso do Sul - MS"));
		estados.add(new SelectItem("MG", "Minas Gerais - MG"));
		estados.add(new SelectItem("PA", "Pará - PA"));
		estados.add(new SelectItem("PB", "Paraíba - PB"));
		estados.add(new SelectItem("PR", "Paraná - PR"));
		estados.add(new SelectItem("PE", "Pernambuco - PE"));
		estados.add(new SelectItem("PI", "Piauí - PI"));
		estados.add(new SelectItem("RJ", "Rio de Janeiro - RJ"));
		estados.add(new SelectItem("RN", "Rio Grande do Norte - RN"));
		estados.add(new SelectItem("RS", "Rio Grande do Sul - RS"));
		estados.add(new SelectItem("RO", "Rondônia - RO"));
		estados.add(new SelectItem("RR", "Roraima - RR"));
		estados.add(new SelectItem("SC", "Santa Cataria - SC"));
		estados.add(new SelectItem("SP", "São Paulo - SP"));
		estados.add(new SelectItem("SE", "Sergipe - SE"));
		estados.add(new SelectItem("TO", "Tocantins - TO"));
	}
	
	public void trocarMascara(ValueChangeEvent evt){
		itemSelecionado.setValue(evt.getNewValue());
		if(itemSelecionado.getValue() != null){
			String tipo = itemSelecionado.getValue().toString();
			if (tipo.equals("PJ")) {  
		        mascaraCpfCnpj = "99.999.999/9999-99";  
		    } else {  
		        mascaraCpfCnpj = "[CPF removido]";  
		    }  
		} 
	}		
	
	public boolean validaTelefones(){
		if(pessoa.getTelefone() == null && pessoa.getCelular() == null)
			return true;
		return false;
	}
	

	
	
	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public SelectItem getItemSelecionado() {
		return itemSelecionado;
	}

	public void setItemSelecionado(SelectItem itemSelecionado) {
		this.itemSelecionado = itemSelecionado;
	}

	public List<SelectItem> getTpPessoa() {
		return tpPessoa;
	}

	public void setTpPessoa(List<SelectItem> tpPessoa) {
		this.tpPessoa = tpPessoa;
	}

	public String getMascaraCpfCnpj() {
		return mascaraCpfCnpj;
	}

	public void setMascaraCpfCnpj(String mascaraCpfCnpj) {
		this.mascaraCpfCnpj = mascaraCpfCnpj;
	}
	
	public List<SelectItem> getEstados() {
		return estados;
	}

	public void setEstados(List<SelectItem> estados) {
		this.estados = estados;
	}

	public String getCpfcnpj() {
		return cpfcnpj;
	}

	public void setCpfcnpj(String cpfcnpj) {
		this.cpfcnpj = cpfcnpj;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public String getCel() {
		return cel;
	}

	public void setCel(String cel) {
		this.cel = cel;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}
	
}
@ManagedBean(name="clienteBean")
@SessionScoped
public class ClienteMB {

	private PessoaMB pessoaMB;
	private Cliente cliente = new Cliente();;
	private ClienteBO clienteBO;
	private String mascaraIE;
	private SelectItem itemSelecionado;
	private String ie;
		
	public void aposEstadoSelecionado(ValueChangeEvent evt){
		//cliente = new Cliente();
		itemSelecionado.setValue(evt.getNewValue());
		String labelVlrSelecioado = itemSelecionado.getLabel().toString();
		if (labelVlrSelecioado.equalsIgnoreCase("AC"))
			this.setMascaraIE("99.999.999/999-99");
		else if(labelVlrSelecioado.equalsIgnoreCase("AL") || labelVlrSelecioado.equalsIgnoreCase("AP") || labelVlrSelecioado.equalsIgnoreCase("ES") || 
				labelVlrSelecioado.equalsIgnoreCase("MA")	|| labelVlrSelecioado.equalsIgnoreCase("MS") || labelVlrSelecioado.equalsIgnoreCase("PI") || 
				labelVlrSelecioado.equalsIgnoreCase("TO"))
			this.setMascaraIE("999999999");
		else if(labelVlrSelecioado.equalsIgnoreCase("AM") || labelVlrSelecioado.equalsIgnoreCase("GO") || labelVlrSelecioado.equalsIgnoreCase("RN"))
			this.setMascaraIE("99.999.999-9");
		else if(labelVlrSelecioado.equalsIgnoreCase("BA"))
			this.setMascaraIE("999999-99");
		else if(labelVlrSelecioado.equalsIgnoreCase("CE") || labelVlrSelecioado.equalsIgnoreCase("PB") || labelVlrSelecioado.equalsIgnoreCase("RR") || 
				labelVlrSelecioado.equalsIgnoreCase("SE"))
			this.setMascaraIE("99999999-9");
		else if(labelVlrSelecioado.equalsIgnoreCase("DF"))
			this.setMascaraIE("[telefone removido]-99");
		else if(labelVlrSelecioado.equalsIgnoreCase("MG"))
			this.setMascaraIE("999.999.999/9999");
		else if(labelVlrSelecioado.equalsIgnoreCase("PA"))
			this.setMascaraIE("99-999999-9");
		else if(labelVlrSelecioado.equalsIgnoreCase("PR"))
			this.setMascaraIE("99999999-99");
		else if(labelVlrSelecioado.equalsIgnoreCase("PE"))
			this.setMascaraIE("99.9.999.9999999-9");
		else if(labelVlrSelecioado.equalsIgnoreCase("Rj"))
			this.setMascaraIE("99.999.99-9");
		else if(labelVlrSelecioado.equalsIgnoreCase("RS"))
			this.setMascaraIE("999/9999999");
		else if(labelVlrSelecioado.equalsIgnoreCase("RO"))
			this.setMascaraIE("999.99999-9");
		else if(labelVlrSelecioado.equalsIgnoreCase("RO"))
			this.setMascaraIE("999.999.999");
		else if(labelVlrSelecioado.equalsIgnoreCase("SP"))
			this.setMascaraIE("999.999.999.999");
	}	
	
	public void gravar(){
		setValoresSemMascara();
		cliente.setPessoa(pessoaMB.getPessoa());
		clienteBO.gravar(getCliente());
	}
	
	public void setValoresSemMascara(){
		pessoaMB.getPessoa().setCpfCnpj(Long.parseLong(removeMascaras(pessoaMB.getCpfcnpj())));
		pessoaMB.getPessoa().setTelefone(Long.parseLong(removeMascaras(pessoaMB.getTel())));
		pessoaMB.getPessoa().setCelular(Long.parseLong(removeMascaras(pessoaMB.getCel())));
		pessoaMB.getPessoa().setCep(Long.parseLong(removeMascaras(pessoaMB.getCep())));
	}
	
	public String removeMascaras(String s){
		String semMascara = s.replaceAll("[^\\p{ASCII}]", "");
		return semMascara;
	}
	
	public PessoaMB getPessoaMB() {
		return pessoaMB;
	}
	public void setPessoaMB(PessoaMB pessoaMB) {
		this.pessoaMB = pessoaMB;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public void setMascaraIE(String mascaraIE) {
		this.mascaraIE = mascaraIE;
	}
	public String getMascaraIE() {
		return mascaraIE;
	}

	public SelectItem getItemSelecionado() {
		return itemSelecionado;
	}

	public void setItemSelecionado(SelectItem itemSelecionado) {
		this.itemSelecionado = itemSelecionado;
	}

	public void setIe(String ie) {
		this.ie = ie;
	}

	public String getIe() {
		return ie;
	}

2 Respostas

ivandasilva

O actionListener do seu botão deve ter a assinatura

public void gravar(ActionEvent e){
    //SUA IMPLEMENTAÇÃO
}

Esta faltando você passar o ActionEvent para o seu método…

G

Eu tbm achei que o problema era este e já havia testado essa solução, porém realizei outro teste trocando a @RequestScope pela @SessionScope e deu certo, agora não sei pq utilizando a @RequestScope não estava populando os beans corretamente! Alguém sabe me dizer pq?

Criado 15 de março de 2011
Ultima resposta 16 de mar. de 2011
Respostas 2
Participantes 2