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
Cadastro endereço:
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.
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)