Já tinha criado uma aplicação em struts já esta até em uso mas o cliente pediu que na hora que busca se por nome e que listasse os nomes. bom pergunta eu fiz só que quando eu busco só retorna 1 nome ele naum lista se tiver 2 ronaldos cadastrados ele retorna o ultimo cadastrado, se vcs poderem me ajudarem vou colocar as classes.
eu acho que tem que usar Collections mas naum sei usar muito bem
public Cadastro select(String nome) throws SQLException {
Cadastro cadastro = new Cadastro();
PreparedStatement statement = connection
.prepareStatement("SELECT * FROM cad_membro WHERE UPPER(NOME_CAD) LIKE ?");
statement.setString(1,"%" + nome.toUpperCase() + "%");
ResultSet rs = statement.executeQuery();
while (rs.next())
{
cadastro.setNum_cad(Long.valueOf(rs.getLong("NUM_CAD")));
cadastro.setNome(rs.getString("NOME_CAD"));
cadastro.setEndereco(rs.getString("END_CAD"));
cadastro.setBairro(rs.getString("BAIRRO_CAD"));
cadastro.setCidade(rs.getString("CIDADE_CAD"));
cadastro.setTelefone(rs.getInt("TEL_CAD"));
cadastro.setDataent(rs.getDate("DATAENT_CAD"));
cadastro.setNascimento(rs.getDate("NASC_CAD"));
}
return cadastro;
}
ACTION
package br.com.novavida.Action;
import br.com.novavida.DAO.CadastroDAO;
import br.com.novavida.Form.MostraCadastroForm;
import br.com.novavida.pojo.Cadastro;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.*;
public class MostraCadastroAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
MostraCadastroForm formulario = (MostraCadastroForm) form;
Cadastro cadastro = formulario.getCadastro();
Cadastro encontrado = new CadastroDAO().select(cadastro.getNome());
request.setAttribute("cadastro", encontrado);
System.out.println("--------------CADASTRO ENCONTRADO---------------");
System.out.println("--------------NÚMERO DE CADASTRO" + " " +cadastro.getNome());
return mapping.findForward("mostra");
}
}
JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@page import="br.com.novavida.DAO.CadastroDAO"%><html:html>
<html:errors />
<head>
<title>Sistema de Cadastro Nova Vida (Versão 1.0)</title>
<style type="text/css">
@IMPORT url("/novavida/controller/css/cadastro.css");
</style>
</head>
<html:form action="/mostracadastro" method="POST">
<body>
<div id="tudo">
<div id="topo"></div>
<div id="menup">
<ul>
<li><a href="/novavida/jsp/buscacad.jsp">Home </a></li>
<li><a href="/novavida/jsp/cadastro.jsp">Cadastrar</a></li>
<li><a href="/novavida/jsp/visitante/visitante.jsp">Visitantes</a>
<ul>
<li><a href="/novavida/jsp/visitante/buscavisit.jsp">Busca</a></li>
</ul>
</li>
</ul>
</div>
<div id="conteudo">
<h1>SISTEMA DE CADASTRO DE MEMBROS</h1>
<fieldset><legend>
<h2>Busca Membros</h2>
</legend> <label> <span>Nome do Membro:</span><html:text
property="cadastro.nome" value="${cadastro.nome}" size="40"></html:text> </label>
<html:submit styleClass="btn">Buscar Cadastro</html:submit></fieldset>
<c:forEach var="cadastro.nome" items="${cadastro.nome}">
<%String parametro=request.getParameter("cadastro.nome");
request.setAttribute("cadastro",new CadastroDAO().select(parametro));%>
<display:table name="cadastro" id="cadastro.num_cad" class="simple" defaultsort="1" defaultorder="descending" pagesize="1000">
<display:column property="num_cad" title="ID" sortable="true" />
<display:column property="nome" title="Nome" sortable="true"/>
<display:column property="endereco" title="End" sortable="true" />
<display:column property="bairro" title="Bairro" sortable="true" />
<display:column property="cidade" title="Cidade" sortable="true" />
<display:column property="telefone" title="TEL" sortable="true" />
<display:column property="dataent" title="Data entrda" sortable="true" />
<display:column property="nascimento" title="Nascimento" sortable="true" />
<display:column title="Editar" >
<a href="verificacadastro.do?cadastro.num_cad=${cadastro.num_cad}">
<img src="/novavida/controller/imagens/editar.gif" title="Editar Visitante" height="15">
</a>
</display:column>
</display:table>
</c:forEach>
</div>
</div>
</body>
</html:form>
</html:html>
Realmente, você tem que usar Collection. Tente isto:
public Collection<Cadastro> select(String nome) throws SQLException {
//Usei LinkedList pq ele mantém na ordem que veio do banco
Collection<Cadastro> retorno = new LinkedList<Cadastro>();
Cadastro cadastro = null;
PreparedStatement statement = connection
.prepareStatement("SELECT * FROM cad_membro WHERE UPPER(NOME_CAD) LIKE ?");
statement.setString(1,"%" + nome.toUpperCase() + "%");
ResultSet rs = statement.executeQuery();
while (rs.next())
{
//Cria nova instância para não sobrescrever referências
cadastro = new Cadastro();
cadastro.setNum_cad(Long.valueOf(rs.getLong("NUM_CAD")));
cadastro.setNome(rs.getString("NOME_CAD"));
cadastro.setEndereco(rs.getString("END_CAD"));
cadastro.setBairro(rs.getString("BAIRRO_CAD"));
cadastro.setCidade(rs.getString("CIDADE_CAD"));
cadastro.setTelefone(rs.getInt("TEL_CAD"));
cadastro.setDataent(rs.getDate("DATAENT_CAD"));
cadastro.setNascimento(rs.getDate("NASC_CAD"));
//Adiciona a instância na Collection
retorno.add(cadastro);
}
return retorno;
}
Na Action vc substitui a linha
por:
e seu JSP ficaria assim:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@page import="br.com.novavida.DAO.CadastroDAO"%><html:html>
<html:errors />
<head>
<title>Sistema de Cadastro Nova Vida (Versão 1.0)</title>
<style type="text/css">
@IMPORT url("/novavida/controller/css/cadastro.css");
</style>
</head>
<html:form action="/mostracadastro" method="POST">
<body>
<div id="tudo">
<div id="topo"></div>
<div id="menup">
<ul>
<li><a >Home </a></li>
<li><a >Cadastrar</a></li>
<li><a >Visitantes</a>
<ul>
<li><a >Busca</a></li>
</ul>
</li>
</ul>
</div>
<div id="conteudo">
<h1>SISTEMA DE CADASTRO DE MEMBROS</h1>
<fieldset><legend>
<h2>Busca Membros</h2>
</legend> <label> <span>Nome do Membro:</span><html:text
property="cadastro.nome" value="${cadastro.nome}" size="40"></html:text> </label>
<html:submit styleClass="btn">Buscar Cadastro</html:submit></fieldset>
<!-- A variavel linha corresponde a cada iteração da Collection -->
<c:forEach var="linha" items="${cadastro}">
<display:table name="linha" id="cadastro.num_cad" class="simple" defaultsort="1" defaultorder="descending" pagesize="1000">
<display:column property="num_cad" title="ID" sortable="true" />
<display:column property="nome" title="Nome" sortable="true"/>
<display:column property="endereco" title="End" sortable="true" />
<display:column property="bairro" title="Bairro" sortable="true" />
<display:column property="cidade" title="Cidade" sortable="true" />
<display:column property="telefone" title="TEL" sortable="true" />
<display:column property="dataent" title="Data entrda" sortable="true" />
<display:column property="nascimento" title="Nascimento" sortable="true" />
<display:column title="Editar" >
<a >
<img >
</a>
</display:column>
</display:table>
</c:forEach>
</div>
</div>
</body>
</html:form>
</html:html>
Espero que tenha ajudado!
[]'s
Deu esse erro aqui
exception
javax.servlet.ServletException: org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "nome"
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "nome"
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.lang.NumberFormatException: For input string: "nome"
java.lang.NumberFormatException.forInputString(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
javax.el.ListELResolver.coerce(ListELResolver.java:166)
javax.el.ListELResolver.getValue(ListELResolver.java:51)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
org.apache.el.parser.AstValue.getValue(AstValue.java:97)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
org.apache.jsp.jsp.buscacad_jsp._jspx_meth_html_005ftext_005f0(buscacad_jsp.java:259)
org.apache.jsp.jsp.buscacad_jsp._jspService(buscacad_jsp.java:145)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
sulito
Janeiro 26, 2010, 7:14am
#4
sinceramente nunca vi um desenho do ichigo tão mal desenhado e tão engraçado
Podes colocar sua classe onde se encontram as variaveis ?
Em algum momento você está covertendo sua variavel String em int.
Ele deve estar setando em algum lugar o srt, tentando o transformar em integer. mas não está conseguindo.
preciso ter uma definição da sua classe Cadastro.
Você tem ela criada não é.
<c:forEach var="cadastro.nome" items="${cadastro.nome}">
<%String parametro=request.getParameter("cadastro.nome");
request.setAttribute("cadastro",new CadastroDAO().select(parametro));%>
Troque por
<c:forEach var="item" items="${cadastro}" varStatus="s" >
<display:table name="linha" id="cadastro.num_cad" class="simple" defaultsort="1" defaultorder="descending" pagesize="1000">
<display:column property="item.num_cad" title="ID" sortable="true" />
...
...
Classe Cadastro
package br.com.novavida.pojo;
import java.io.Serializable;
import java.sql.Date;
public class Cadastro
implements Serializable
{
private static final long serialVersionUID = 1L;
private Long num_cad;
private String nome;
private String email;
private String endereco;
private String bairro;
private String cidade;
private String uf;
private int cep;
private int telefone;
private Date nascimento;
private String profissao;
private String estcivil;
private int nfilhos;
private String conjuge;
private String membroigreja;
private String outraigreja;
private Date batismo;
private String funcao;
private String imagem;
private Date dataent;
private int teltrab;
private Date datacas;
private Date nasconj;
private String sexo;
private String tipocad1;
private String tipocad2;
private String tipocad3;
private String tipocad4;
public Cadastro()
{
}
public String getTipocad2()
{
return tipocad2;
}
public void setTipocad2(String tipocad2)
{
this.tipocad2 = tipocad2;
}
public String getTipocad3()
{
return tipocad3;
}
public void setTipocad3(String tipocad3)
{
this.tipocad3 = tipocad3;
}
public String getTipocad4()
{
return tipocad4;
}
public void setTipocad4(String tipocad4)
{
this.tipocad4 = tipocad4;
}
public String getTipocad1()
{
return tipocad1;
}
public void setTipocad1(String tipocad)
{
tipocad1 = tipocad;
}
public String getSexo()
{
return sexo;
}
public void setSexo(String sexo)
{
this.sexo = sexo;
}
public String getBairro()
{
return bairro;
}
public void setBairro(String bairro)
{
this.bairro = bairro;
}
public Date getBatismo()
{
return batismo;
}
public void setBatismo(Date batismo)
{
this.batismo = batismo;
}
public int getCep()
{
return cep;
}
public void setCep(int cep)
{
this.cep = cep;
}
public String getCidade()
{
return cidade;
}
public void setCidade(String cidade)
{
this.cidade = cidade;
}
public String getConjuge()
{
return conjuge;
}
public void setConjuge(String conjuge)
{
this.conjuge = conjuge;
}
public Date getDatacas()
{
return datacas;
}
public void setDatacas(Date datacas)
{
this.datacas = datacas;
}
public Date getDataent()
{
return dataent;
}
public void setDataent(Date dataent)
{
this.dataent = dataent;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getEndereco()
{
return endereco;
}
public void setEndereco(String endereco)
{
this.endereco = endereco;
}
public String getEstcivil()
{
return estcivil;
}
public void setEstcivil(String estcivil)
{
this.estcivil = estcivil;
}
public String getFuncao()
{
return funcao;
}
public void setFuncao(String funcao)
{
this.funcao = funcao;
}
public String getImagem()
{
return imagem;
}
public void setImagem(String imagem)
{
this.imagem = imagem;
}
public String getMembroigreja()
{
return membroigreja;
}
public void setMembroigreja(String membroigreja)
{
this.membroigreja = membroigreja;
}
public Date getNascimento()
{
return nascimento;
}
public void setNascimento(Date nascimento)
{
this.nascimento = nascimento;
}
public int getNfilhos()
{
return nfilhos;
}
public void setNfilhos(int nfilhos)
{
this.nfilhos = nfilhos;
}
public String getNome()
{
return nome;
}
public void setNome(String nome)
{
this.nome = nome;
}
public Long getNum_cad()
{
return num_cad;
}
public void setNum_cad(Long num_cad)
{
this.num_cad = num_cad;
}
public String getOutraigreja()
{
return outraigreja;
}
public void setOutraigreja(String outraigreja)
{
this.outraigreja = outraigreja;
}
public String getProfissao()
{
return profissao;
}
public void setProfissao(String profissao)
{
this.profissao = profissao;
}
public int getTelefone()
{
return telefone;
}
public void setTelefone(int telefone)
{
this.telefone = telefone;
}
public int getTeltrab()
{
return teltrab;
}
public void setTeltrab(int teltrab)
{
this.teltrab = teltrab;
}
public String getUf()
{
return uf;
}
public void setUf(String uf)
{
this.uf = uf;
}
public Date getNasconj()
{
return nasconj;
}
public void setNasconj(Date nasconj)
{
this.nasconj = nasconj;
}
}
Resolvi assim o que foi inteirado no for a variavel <c:forEach var="linha" items="${cadastro}">
e depois <a href="verificacadastro.do?cadastro.num_cad=${linha.num_cad}">
muito obrigado pela ajuda