Pegar código do cliente - JSF

Java

06/07/2015

Pessoal,

Como faço para pegar o código e o nome do cliente e carregá-los para a tela de cadastro de endereço? Além disso, como faço para exibir no dataTable apenas os endereços cadastrados para esse cliente? Do modo como fiz, não está sendo carregado o cliente correto.

Por exemplo, através do botão Novo da tabView Endereços da tela de cadastro de cliente (figura abaixo), é chamada a tela de cadastro de endereço:
[img:descricao=Cadastro de cliente]http://arquivo.devmedia.com.br/forum/imagem/247705-20150706-001140.png[/img]

A tela de cadastro de endereço, por sua vez, deverá exibir o nome do cliente para que o usuário possa saber para qual cliente o endereço deverá ser cadastrado:
[img]http://arquivo.devmedia.com.br/forum/imagem/247705-20150706-001341.png[/img]

Só que o cliente exibido neste exemplo não é o cliente deste endereço.

Segue código das páginas:

Cadastro cliente
<h:form id="frmCadastro" acceptcharset="ISO-8859-1">  
        
        <h1>Novo cliente</h1>  
        
        <p:messages id="messages" autoUpdate="true" closable="true" />
        
        <p:toolbar style="margin-top: 20px">
            <p:toolbarGroup>
                <p:button value="Novo" outcome="/restrito/cadastrarcliente" icon="ui-icon-plusthick"/>
                <p:commandButton value="Salvar" action="#{clienteBean.salvar()}" ajax="false" update="@frmCadastro" icon="ui-icon-disk"/>  
	    </p:toolbarGroup>
            <p:toolbarGroup align="right">
	    	<p:button value="Pesquisar" outcome="/restrito/consultarclientes" icon="ui-icon-search"/>
	    </p:toolbarGroup>
	</p:toolbar>         
        
        <p:panel id="pnlDadosPessoais" header="Dados Pessoais" style="margin-top: 20px">
            
            <p:focus context="pnlDadosPessoais"/>
            
            <h:inputHidden id="codigo" value="#{clienteBean.cliente.codigo}" />
            <h:inputHidden id="ativo" value="#{clienteBean.cliente.ativo}" />
            
            <p:panelGrid columns="4" style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo, rotulo campo">                
                <p:outputLabel value="Corretor Responsável:" />
                <p:selectOneMenu id="corretor" value="#{clienteBean.cliente.corretor}" required="true" requiredMessage="Corretor deve ser informado." immediate="true"
                                 converter="corretorConverter">
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{clienteBean.corretores}" var="corretor" itemLabel="#{corretor.nome}" itemValue="#" />    
                </p:selectOneMenu>
                
                <p:outputLabel value="Data do Cadastro:" />
                <p:outputLabel id="datacadastro" value="#{clienteBean.cliente.datacadastro}">
                    <f:convertDateTime pattern="dd/MM/yyyy" />
                </p:outputLabel>                
          
                <p:outputLabel value="Nome:" />
                <p:inputText id="nome" value="#{clienteBean.cliente.nome}" label="Nome" size="80" required="true" requiredMessage="Nome deve ser informado." immediate="true"/>
                
                <p:outputLabel value="Data Nascimento:" />
                <p:calendar id="nascimento" value="#{clienteBean.cliente.nascimento}" pattern="dd/MM/yyyy" mask="true" label="Nascimento" size="8" 
                            required="true" requiredMessage="Data de Nascimento deve ser informada." immediate="true">
                </p:calendar>                 
                               
                <p:outputLabel value="Pessoa:" />
                <p:selectOneMenu id="pessoa" value="#{clienteBean.cliente.pessoa}" label="Pessoa" required="true" requiredMessage="Tipo de Pessoa deve ser informado." immediate="true">
                    <f:selectItems value="#{clienteBean.pessoas}" var="pessoa" itemLabel="#{pessoa.descricao}" itemValue="#"/>
                    <p:ajax event="change" update="pnlDocumentacao" process="@this"/>
                </p:selectOneMenu>
 
	    	<p:outputLabel value="Estado Civil:" for="estadocivil"/>
                <p:selectOneMenu id="estadocivil" value="#{clienteBean.cliente.estadocivil}">
                    <f:selectItems value="#{clienteBean.estadoscivis}" var="estadocivil" itemLabel="#{estadocivil.descricao}" itemValue="#"/>
                </p:selectOneMenu>  
                
	    	<p:outputLabel value="Sexo:" for="sexo"/>
                <p:selectOneMenu id="sexo" value="#{clienteBean.cliente.sexo}">
                    <f:selectItems value="#{clienteBean.sexos}" var="sexo" itemLabel="#{sexo.descricao}" itemValue="#"/>
                </p:selectOneMenu>                
                
                <p:outputLabel value="Profissão:" />
                <p:selectOneMenu id="profissao" value="#{clienteBean.cliente.profissao}" label="Profissao" required="true" requiredMessage="Profissão deve ser informada." 
                                 immediate="true" converter="profissaoConverter">                          
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{clienteBean.profissoes}" var="profissao" itemValue="#" itemLabel="#{profissao.descricao}" />
                </p:selectOneMenu>
            </p:panelGrid>         
        </p:panel>
        
        <p:panel header="Documentação" id="pnlDocumentacao" style="margin-top: 20px">                    
            <h:panelGrid columns="10" cellpadding="5" columnClasses="rotulo, campo">                                  
                <p:outputLabel id="cpfcnpj" value="#{clienteBean.cliente.pessoa.descricao == 'Juridica'? 'CNPJ:' : 'CPF:'}" />
                <p:inputMask id="cpf" mask="#{clienteBean.cliente.pessoa.descricao == 'Jurídica'? '99.999.999/9999-99' : '999.999.999-99'}"  
                             value="#{clienteBean.cliente.cpf}" required="true" requiredMessage="CPF / CNPJ deve ser informado." size="15" immediate="true" /> 
                
                <p:outputLabel value="Tipo Documento:" />
                <p:selectOneMenu id="tipodoc" value="#{clienteBean.cliente.tipodoc}" style="width:160px" required="true" requiredMessage="Tipo de Documento deve ser informado." immediate="true">
                    <f:selectItem itemLabel="RG" itemValue="RG" />
                    <f:selectItem itemLabel="RNE" itemValue="RNE" />
                    <f:selectItem itemLabel="DOCTO DE CLASSE" itemValue="DOCTO DE CLASSE" />
                </p:selectOneMenu>
                
                <p:outputLabel value="Nº Documento:" />
                <p:inputMask mask="999?999999999999" id="numdoc" value="#{clienteBean.cliente.numdoc}" size="15" 
                             required="true" requiredMessage="Nº Documento deve ser informado." immediate="true"/>
            
                <p:outputLabel value="Órgão Emissor:" />
                <p:inputText id="orgaodoc" value="#{clienteBean.cliente.orgaodoc}" size="10" required="true" requiredMessage="Órgão Emissor deve ser informado." immediate="true"
                             onkeydown="this.value = this.value.toUpperCase();" onkeyup="this.value = this.value.toUpperCase()"/>
                    
                <p:outputLabel value="Emissão/Validade:" />
                <p:calendar id="datadoc" value="#{clienteBean.cliente.datadoc}" pattern="dd/MM/yyyy" mask="true" size="8" required="true" 
                            requiredMessage="Data de Emissão/Validade deve ser informada." immediate="true">
                </p:calendar>                   
            </h:panelGrid>
        </p:panel>
        
        <p:panel header="CNH" style="margin-top: 20px">           
            <h:panelGrid columns="8" cellpadding="5" columnClasses="rotulo, campo">
                <p:outputLabel value="Nº Registro:" />
                <p:inputMask mask="999?999999999999" id="numcnh" value="#{clienteBean.cliente.numcnh}" size="15" />
                
                <p:outputLabel value="Validade: " />
                <p:calendar id="validadecnh" value="#{clienteBean.cliente.validadecnh}" pattern="dd/MM/yyyy" mask="true" size="8">
                    <f:convertDateTime pattern="dd/MM/yyyy" />
                </p:calendar>                 
                
                <p:outputLabel value="Categoria:" />
                <p:inputText id="categoriacnh" value="#{clienteBean.cliente.categoriacnh}" size="5" 
                             onkeydown="this.value = this.value.toUpperCase();" onkeyup="this.value = this.value.toUpperCase()"/>
            
                <p:outputLabel value="Primeira Habilitação: " />
                <p:calendar id="primeiracnh" value="#{clienteBean.cliente.primeiracnh}" pattern="dd/MM/yyyy" mask="true" size="8" timeZone="America/Sao_Paulo">
                </p:calendar>                                    
            </h:panelGrid>
        </p:panel> 
        
        <p:tabView dynamic="true" cache="false" style="margin-top: 20px">
            <p:tab title="Endereços">                
                <p:dataTable value="#{clienteBean.enderecos}" var="endereco" id="enderecosTable"
                             style="margin-top: 10px" rows="2" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom">
                     
                    <p:column headerText="Tipo" style="text-align: left; width: 50%">
                        <h:outputText id="tipoend" value="#{endereco.tipoendereco}" />
                    </p:column>    
                    
                     <p:column headerText="Logradouro" style="text-align: left; width: 100%"> 
                         <h:outputText id="logradouro" value="#{endereco.logradouro}" />
                    </p:column>
                
                    <p:column headerText="Número" style="text-align: center; width: 30%">
                        <h:outputText id="numero" value="#{endereco.numero}" /> 
                    </p:column>    
                
                    <p:column headerText="Complemento" style="text-align: left; width: 40%">
                        <h:outputText id="complemento" value="#{endereco.complemento}" />
                    </p:column>
                    
                    <p:column headerText="Bairro" style="text-align: left; width: 60%">
                        <h:outputText id="bairro" value="#{endereco.bairro}" />
                    </p:column>    
                    
                    <p:column headerText="Cidade" style="text-align: left; width: 70%">
                        <h:outputText id="cidade" value="#{endereco.cidade}" />
                    </p:column>    
                    
                    <p:column headerText="UF" style="text-align: center; width: 20%">
                        <h:outputText id="uf" value="#{endereco.uf}" />
                    </p:column>    
  
                    <p:column headerText="CEP" style="text-align: center; width: 30%">
                        <h:outputText id="cep" value="#{endereco.cep}" /> 
                    </p:column>
                    
                    <p:column style="text-align: center; width: 30%"> 
                        <p:commandButton title="Editar" action="#{enderecoBean.editar()}" ajax="false" icon="ui-icon-pencil">
                            <f:setPropertyActionListener target="#{enderecoBean.endereco}" value="#" />
                        </p:commandButton>    
 
                        <p:commandButton title="Excluir" action="#{enderecoBean.excluir()}" icon="ui-icon-trash" 
                                         onclick="if (!confirm('Confirma a exclusão do endereço?')) return false;">
                            <f:setPropertyActionListener target="#{enderecoBean.endereco}" value="#" />
                        </p:commandButton>
                    </p:column>    
                </p:dataTable>
                <p:commandButton value="Novo" action="#{enderecoBean.novo()}" ajax="false"  icon="ui-icon-plusthick" style="margin-top: 20px"/>  
            </p:tab>
            
             <p:tab title="Telefones">
                 <p:dataTable value="#{clienteBean.telefones}" var="telefone" id="telefonesTable"
                             style="margin-top: 10px" rows="2" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom">
                     
                    <p:column headerText="Tipo" style="text-align: left; width: 30%">
                        <h:outputText id="tipotel" value="#{telefone.tipotelefone}" />
                    </p:column>    
                
                    <p:column headerText="Telefone" style="text-align: center; width: 30%">
                        <h:outputText id="telefone" value="#{telefone.numero}" /> 
                    </p:column>    
                
                    <p:column headerText="Observação" style="text-align: left; width: 100%"> 
                        <h:outputText id="observacao" value="#{telefone.observacao}" /> 
                    </p:column>    
                    <p:column style="text-align: center; width: 20%"> 
                        <p:commandButton title="Editar" action="#{telefoneBean.editar()}" ajax="false" icon="ui-icon-pencil">
                            <f:setPropertyActionListener target="#{telefoneBean.telefone}" value="#" />
                        </p:commandButton>    
 
                        <p:commandButton title="Excluir" action="#{telefoneBean.excluir()}" onclick="if (!confirm('Confirma a exclusão?')) return false;"
                                    icon="ui-icon-trash" >
                            <f:setPropertyActionListener target="#{telefoneBean.telefone}" value="#" />
                        </p:commandButton>
                    </p:column>    
                </p:dataTable>
                <p:commandButton value="Novo" action="#{telefoneBean.novo()}" ajax="false"  icon="ui-icon-plusthick" style="margin-top: 20px"/> 
            </p:tab>            
            
            <p:tab title="E-mails"> 
                 <br/>
                 <p:commandButton value="Novo E-mail" action="#{emailBean.novo()}" icon="ui-icon-plusthick" process="@this">
                     <f:param name="cliente" value="#{clienteBean.cliente.codigo}"/>
                 </p:commandButton>
                 <p:dataTable value="#{clienteBean.emails}" var="email" id="tabelaEmails" rendered="#{!empty clienteBean.emails}"
                              style="margin-top: 20px" emptyMessage="Nenhum email encontrado." rows="2"
                              paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom">
                     
                    <p:column headerText="Tipo" style="text-align: center; width: 100px">
                        <h:outputText id="tipoemail" value="#{email.tipoemail}" />
                    </p:column>    
                
                    <p:column headerText="Email" style="text-align: center">
                        <h:outputText id="email" value="#{email.email}" /> 
                    </p:column>    
                
                    <p:column headerText="Observação" style="text-align: center"> 
                        <h:outputText id="obs" value="#{email.observacao}" /> 
                    </p:column>    
                    <p:column> 
                        <p:commandButton title="Editar" action="#{emailBean.editar()}" ajax="false" icon="ui-icon-pencil">
                            <f:setPropertyActionListener target="#{emailBean.email}" value="#" />
                        </p:commandButton>    
 
                        <p:commandButton title="Excluir" action="#{emailBean.excluir()}" onclick="if (!confirm('Confirma a exclusão?')) return false;" icon="ui-icon-trash" >
                            <f:setPropertyActionListener target="#{emailBean.email}" value="#" />
                        </p:commandButton>
                    </p:column>    
                </p:dataTable>
            </p:tab> 
            
            <p:tab title="Anexos">
                <br/>
                <p:commandButton value="Novo Anexo" action="#{arquivoclienteBean.novo()}" ajax="false" icon="ui-icon-plusthick" process="@this"/>                               
            </p:tab>
        </p:tabView>                  
    </h:form>


Cadastro endereço:
    <h:form id="frmCadastro" acceptcharset="ISO-8859-1">
        
        <h1>Novo endereço</h1>
        
        <p:messages id="messages" autoUpdate="true" closable="true" />        
        
        <p:toolbar style="margin-top: 20px">
            <p:toolbarGroup>
                <p:button value="Novo" outcome="/restrito/cadastrarendereco" icon="ui-icon-plusthick"/>
                <p:commandButton action="#{enderecoBean.salvar()}" value="Salvar" ajax="false" update="@frmCadastro" icon="ui-icon-disk"/>
	    </p:toolbarGroup>
            <p:toolbarGroup align="right">
                <p:button value="Pesquisar" outcome="/restrito/consultarclientes" icon="ui-icon-arrowreturnthick-1-w"/>
	    </p:toolbarGroup>            
	</p:toolbar> 

        <p:panel header="Dados do Endereço" style="margin-top: 20px">
                       
            <h:inputHidden id="codigo" value="#{enderecoBean.endereco.codendereco}" />
            
            <p:panelGrid columns="2" style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo">
                
                <h:outputText value="Cliente:" />
                <p:inputText id="cliente" value="#{clienteBean.cliente.nome}" size="60" readonly="true" />                           
                
                <h:outputText value="Tipo de Endereço:" />
                <p:selectOneMenu id="tipoEndereco" value="#{enderecoBean.endereco.tipoendereco}" label="Tipo de Endereço" required="true" requiredMessage="Tipo de Endereço deve ser informado." immediate="true">
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{enderecoBean.tiposEndereco}" var="tipoEndereco" itemLabel="#{tipoEndereco.descricao}" itemValue="#"/>
                </p:selectOneMenu> 
                
                <h:outputText value="Logradouro:" />
                <p:inputText id="log" value="#{enderecoBean.endereco.logradouro}" required="true" label="Logradouro" size="60" requiredMessage="Logradouro deve ser informado." immediate="true"/>
                
                <h:outputText value="Número:" />
                <p:inputMask mask="9?999999999" value="#{enderecoBean.endereco.numero}" required="true" label="Nº" size="10" maxlength="10" requiredMessage="Número deve ser informado." immediate="true"/>
 
                <h:outputText value="Complemento:" />
                <p:inputText value="#{enderecoBean.endereco.complemento}" size="50" maxlength="20" />
 
                <h:outputText value="Bairro:" />
                <p:inputText value="#{enderecoBean.endereco.bairro}" label="Bairro" required="true" size="50" maxlength="50" requiredMessage="Bairro deve ser informado." immediate="true"/>
 
                <h:outputText value="Cidade:" />
                <p:inputText value="#{enderecoBean.endereco.cidade}" label="Cidade" required="true" size="50" maxlength="50" requiredMessage="Cidade deve ser informada." immediate="true"/>                
                
                <h:outputText value="UF:" />
                <p:selectOneMenu id="uf" value="#{enderecoBean.endereco.uf}" required="true" requiredMessage="UF deve ser informado." immediate="true">
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{enderecoBean.ufs}" var="uf" itemLabel="#{uf.descricao}" itemValue="#"/>
                </p:selectOneMenu>
                
                <h:outputText value="CEP:" />
                <p:inputMask id="cep" mask="99999-999" value="#{enderecoBean.endereco.cep}" required="true" size="10" maxlength="10" requiredMessage="CEP deve ser informado." immediate="true"/>
                
            </p:panelGrid>
        </p:panel>              
    </h:form>


Estou tentando resolver isso há um bom tempo porque sou iniciante em Java e JSF, e preciso terminar esse projeto.

Se alguém puder me orientar nessa questão, agradeço muito.
Sgrandini

Sgrandini

Curtidas 0
POSTAR