Boa noite
Pessoal estou com um problema…
Meu sisteminha tem Cliente (classe pai) e PessoaFisica e PessoaJuridica que herda de cliente.
meu controlador esta assim:
[code]public class ClienteCTR extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cliente cli = new Cliente();
PessoaFisica pf = new PessoaFisica();
PessoaJuridica pj = new PessoaJuridica();
ClienteDAO daoC = new ClienteDAO();
cli.setCodigo(Integer.parseInt(request.getParameter("codigo").toUpperCase()));
cli.setNome(request.getParameter("nome").toUpperCase());
cli.setRua(request.getParameter("rua").toUpperCase());
cli.setNumero(request.getParameter("numero"));
cli.setCep(request.getParameter("cep"));
cli.setBairro(request.getParameter("bairro").toUpperCase());
cli.setCidade(request.getParameter("cidade").toUpperCase());
cli.setEstado(request.getParameter("estado"));
cli.setPais(request.getParameter("pais").toUpperCase());
cli.setTelefone(request.getParameter("telefone"));
//testando para passar as informações para a tela.
String tipo = request.getParameter("tipo");
if(tipo.equals("pFisica")){
pf = new PessoaFisica(cli);
// recupera os dados de fisico
pf.setRg(request.getParameter("rg"));
pf.setCpf(request.getParameter("cpf"));
DateFormat fmtData = new SimpleDateFormat("dd/MM/yyyy");
String data = request.getParameter("dataNascimento");
try {
pf.setDataNascimento(new Date(fmtData.parse(data).getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
pf.setSexo(request.getParameter("sexo"));
//salvar no banco
daoC.salvar(pf);
}
/*
pf.setRg(request.getParameter("rg").toUpperCase());
pf.setCpf(request.getParameter("cpf").toUpperCase());
pf.setSexo(request.getParameter("sexo").toUpperCase());
*/
if(tipo.equals("Pjuridica")){
pj = new PessoaJuridica(cli);
pj.setCnpj(request.getParameter("cnpj"));
pj.setInscricaoEstadual(request.getParameter("inscricaoEstadual"));
//salvar no banco
daoC.salvar(pj);
}
/*
pj.setCnpj(request.getParameter(“cnpj”));
pj.setInscricaoEstadual(request.getParameter(“inscricaoEstadual”));
*/
// daoC.salvar(cli);
response.setCharacterEncoding("ISO-8859-1");
request.setAttribute("cliente", cli);
request.setAttribute("pessoaJuridica", pj);
request.setAttribute("pessoaFisica", pf);
RequestDispatcher visao = request.getRequestDispatcher("respCliente.jsp");
visao.forward(request, response);
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
[/code]
a minha pagina de relatório relCliente.jsp, esta da seguinte forma:
[code] Nome:
Pesquisar
Código |
Nome |
Rua |
Numero |
CEP |
Bairro |
Cidade |
Estado |
Pais |
Telefone |
RG |
CPF |
Sexo |
Data Nascimento |
CNPJ |
Ins. Estadual |
<%
List listaCliente =(List)
request.getAttribute(“listaCliente”);
for(Cliente cli: listaCliente){
%>
<%
List listaPF =(List)
request.getAttribute(“listaPF”);
for(PessoaFisica pf: listaPF){
%>
<%
List listaPJ =(List)
request.getAttribute(“listaPJ”);
for(PessoaJuridica pj: listaPJ){
%>
<%=cli.getCodigo()%> |
<%=cli.getNome() %> |
<%=cli.getRua() %> |
<%=cli.getNumero() %> |
<%=cli.getCep() %> |
<%=cli.getBairro() %> |
<%=cli.getCidade() %> |
<%=cli.getEstado() %> |
<%=cli.getPais() %> |
<%=cli.getTelefone() %> |
<%=pf.getRg() %> |
<%=pf.getCpf() %> |
<%=pf.getSexo() %> |
<%=pf.getDataNascimento() %> |
<%=pj.getCnpj() %> |
<%=pj.getInscricaoEstadual() %> |
</tr>
<%
}
%>
</table>
</div>
<jsp:include page="libs/rodape.jsp"></jsp:include>
[/code]
Se eu tirar as lista de PF e PJ. O relatório sai com os dados de CLIENTE, os dados caso for PFisica ou Pjuridica.
como fazer o relatorio mostrar os dados completo???
Pode ser com expressão de linguagem também…
obrigado
ALGUEM PODE ME AJUDAR??
Ainda nao consegui resolver este problema para mostrar os dados no relatório.
[quote=macavieira]Se eu tirar as lista de PF e PJ. O relatório sai com os dados de CLIENTE, os dados caso for PFisica ou Pjuridica.
como fazer o relatorio mostrar os dados completo??? .[/quote]
Não entendi direito o que vc deseja… tem como vc formular novamente a sua pergunta para que eu possa tentar te ajudar?
[quote=macavieira]ALGUEM PODE ME AJUDAR??
Ainda nao consegui resolver este problema para mostrar os dados no relatório.[/quote]
vc tem que recuperar os objetos do seu controlador.
vc fez assim no seu controlador:
request.setAttribute("cliente", cli);
request.setAttribute("pessoaJuridica", pj);
request.setAttribute("pessoaFisica", pf);
na sua pagina jsp, vc tem q recupera-los com o request.getAttribute.
no lugar de:
[code]<%
List<Cliente> listaCliente =(List<Cliente>)
request.getAttribute("listaCliente");
for(Cliente cli: listaCliente){
%>
<%
List<PessoaFisica> listaPF =(List<PessoaFisica>)
request.getAttribute("listaPF");
for(PessoaFisica pf: listaPF){
%>
<%
List<PessoaJuridica> listaPJ =(List<PessoaJuridica>)
request.getAttribute("listaPJ");
for(PessoaJuridica pj: listaPJ){
%> [/code]
coloque:
<%
List<Cliente> listaCliente =(List<Cliente>)
request.getAttribute("cliente");
for(Cliente cli: listaCliente){
%>
<%
List<PessoaFisica> listaPF =(List<PessoaFisica>)
request.getAttribute("pessoaFisica");
for(PessoaFisica pf: listaPF){
%>
<%
List<PessoaJuridica> listaPJ =(List<PessoaJuridica>)
request.getAttribute("pessoaJuridica");
for(PessoaJuridica pj: listaPJ){
%>
não entendi muito sua duvida, ve se isso te ajuda.
Bem meu Controlador esta mandando as informações assim:
request.setAttribute("cliente", cli);
request.setAttribute("pessoaJuridica", pj);
request.setAttribute("pessoaFisica", pf);
RequestDispatcher visao = request.getRequestDispatcher("respCliente.jsp");
Agora no meu relatório não estou misturando java com o HTML e mudei para Linguagem de Expressão e esta assim:
[code] <c:forEach var=“cliente” items="${listaCliente}">
<tr>
<td><a href="cliente.do?codigo=${cliente.codigo}"><img border="0" src="/imagens/editar.gif"></a></td>
<td><a href="cliente.do?codigo=${cliente.codigo}&acao=del"> <img border="0" src="/imagens/excluir.gif"></a></td>
<td>${cliente.codigo}</td>
<td>${cliente.nome}</td>
<td>${cliente.rua}</td>
<td>${cliente.numero}</td>
<td>${cliente.cep}</td>
<td>${cliente.bairro}</td>
<td>${cliente.cidade}</td>
<td>${cliente.estado}</td>
<td>${cliente.pais}</td>
<td>${cliente.telefone}</td>
</tr>
</c:forEach>[/code]
até aqui esta tudo perfeito. O problema é que todo cliente ou e uma PessoaFisica ou uma Pessoa juridica, e na hora que eu chamo um desses da pal e nao mostra o relatorio com as demais informações de cliente.
Estou querendo saber o que tenho que fazer para mostar as informações do cliente completo.
tenho que fazer um IF pra comprar os 2? Como eu fiz no Controlador para gravar no banco? Ae no caso ficaria mais ou menos assim:
[code]<c:choose>
<c:when test="${tipoP == ‘INQUILINO’}">
<span class="corLetraNegrito" id="rendaInqui">RENDA:</span><br/>
R$ ${pessoa.renda}</td>
</c:when>
<c:when test="${tipoP == 'FIADOR'}">
<span class="corLetraNegrito" id="rendaFia">RENDA:</span><br/>
R$ ${pessoa.renda}</td>
</c:when>
</c:choose> [/code]
Este exemplo foi usando em um ralatorio se fosse inquilo mosta uma coisa se for fiador mostra outra.
tenho que fazer parecido com isso para recuperar as informações de clientes?
No meu projeto tenho um RelatorioCTR
[code]
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String tipo = request.getParameter(“tipo”);
String pesquisa = request.getParameter(“valorPesquisa”);
String destino=null;
if(tipo.equals(“produto”)){
ProdutoDAO daoP = new ProdutoDAO();
List produtos;
if((pesquisa!=null)&&(pesquisa.length()>0)){
produtos = daoP.buscarPorNome(pesquisa.toUpperCase());
} else {
produtos = daoP.buscarTodosProdutos();
}
request.setAttribute(“listaProdutos”, produtos);
destino=“relProduto.jsp”;
}else if(tipo.equals("unidadeMedida")){
UnidadeMedidaDAO daoUM= new UnidadeMedidaDAO();
List<UnidadeMedida> unidades;
if((pesquisa!=null)&&(pesquisa.length()>0)){
unidades = daoUM.buscarPorDescricao(pesquisa.toUpperCase());
} else {
unidades = daoUM.buscarTodasUnidadesMedida();
}
request.setAttribute("listaUnidades", unidades);
destino="relUnidades.jsp";
}else if(tipo.equals("cliente")){
ClienteDAO daoC= new ClienteDAO();
List<Cliente> cliente;
if((pesquisa!=null)&&(pesquisa.length()>0)){
cliente = daoC.buscarPorNome(pesquisa.toUpperCase());
} else {
cliente = daoC.buscarTodosClientes();
}
request.setAttribute("listaCliente", cliente);
destino="relCliente.jsp";
}
RequestDispatcher enviar = request.getRequestDispatcher(destino);
enviar.forward(request, response);[/code]
Estou achando que tenho que criar uma lista para trazer as informações de pessoaJuridica e pessoaFisica, pois usando do jei que esta ele só mostra Cliente.
Como devo fazer isso?
Alguem pode me ajuda?
Fuçando e pegando ajuda com alguns amigos consegui resolver meu problema.
no meu RelatorioCTR, tirei a lista de cliente e fiz 2 listas:
-ListaPessoaFisica
-ListaPessoaJuridica
E na pagina de relatorio eu chamo todos os dados de Pjuridica e novamente de Pfisica.
Se existir os 2 tipo de clientes a tabela fica com todas informçãoes.
Deu certo!
Estou sem os códigos aqui, mas se alguem precisar eu passo depois.
Obrigado pela ajuda de todos