Javabean do tipo DATE

pessol tenho seguinte atributo numa classe javabean:

import java.util.Date;
private Date dataNascimento;
public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

no JSP tenho um campo

<input type="text" name="dataNascimento"/>

p/ cadastrar tal valor no Banco uso o seguinte trecho

st.setDate(2, (java.sql.Date) u.getDataNascimento());

porem qdo eu preecho o bean e vou executar o metodo de cadastro no Servlet ta dando esse erro:

java.lang.IllegalArgumentException: Cannot invoke beans.Usuario.setDataNascimento - argument type mismatch

uso o oracle e o campo tem o tipo DATE
eu preciso transformar de String p/ Date é isso ?
como devo proceder ?

thanks !!

Vc nao pode realizar o cast dessa forma:
Faça assim:


st.setDate(2, new java.sql.Date( u.getDataNascimento().getTime() ));

Resolverá seu problema …

desce !

infelizmente nao resolveu … :frowning:

ele nao conseguindo preencher o bean, ou seja, nao consegue setar o valor p/ dataNascimento pq este está incompativel …

ta fogos rsrsr !!

a e so sobre o cast… pq tem q ser feito daquela forma ?

Me mostre como vc pega do HTML e repassa para bean …

[quote=ramilani12]Me mostre como vc pega do HTML e repassa para bean …

[/quote]

&lt;input type="text" name="dataMatricula" &gt;

Bom se o usuário digitar qualquer coisa?

Uma forma:


No servlet

private static SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");

try
{
Date data = fmt.parse(request.getParameter("dataMatricula"));
} catch(ParseException ex)
{
      System.out.println("Nao foi possivel validar a data");
}

O metodo parse da Classe SimpleDateFormat ira verificar se data é valida senao ele lancara excpetion

Fri Jan 12 01:29:00 BRST 6790

ele ta escrevende data assim , nao deveria ser no formato especificado ?

continua dando o mesmo erro, deve ser por isso :wink:

Vc fez o teste ali que sugeri , isso esta me cheirando que vc deu Date.toString()

teste q vc fala é esse:

[code]SimpleDateFormat fmt = new SimpleDateFormat(“dd/mm/yyyy”);

	try {
		Date data = fmt.parse(request.getParameter("dataMatricula"));
		System.out.println(data);
	} catch (ParseException ex) {
		out.println("Nao foi possivel validar a data");
	}[/code]

Ok então ele fez o correto o parse da data agora para comprovar faço o contrário:
Transforme ele para String com metodo format() com formato que vc definiu dd/MM/yyyy
Lembrando que mes é com MM maiúsculo o m minusculo se refere a minutos de uma hora
Veja no Java doc:
http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
 
 		try {
 			Date data = fmt.parse(request.getParameter("dataMatricula"));
 			System.out.println(data);
                        System.out.println("Data Formatada "+fmt.format(data)); 
                        
 		} catch (ParseException ex) {
 			out.println("Nao foi possivel validar a data");
 		}

vou dormir amanha tem novas cenas rsrrs

flw !! brigadao !!

essa parte de transformar pra data eu consegui, porem nao consigo fazer o BeanUtils.populate preencher o bean


Usuario u = new Usuario();
		
		try {
		Locale locale  = new Locale("pt-BR");
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy",locale); 
		Date d = formatador.parse(request.getParameter("dataNascimento"));
			
		u.setDataNascimento(d);
			
		} catch (ParseException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}	
		

		// POPULANDO BEAN USUARIO
		try {
			
		BeanUtils.populate(u, request.getParameterMap());
		out.println("bean usuario ok !");
		} catch (IllegalAccessException e1) {
			e1.printStackTrace();
		} catch (InvocationTargetException e2) {
			e2.printStackTrace();
		}