PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Pegar código do cliente - JSF #524941

06/07/2015

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar