Duvida sobre formatação de datas em um arquivo jsp

11 respostas
J

Galera, boa tarde

Sou iniciante em java e estou fazendo um exercicio referente a jsp e em um ponto deste exercício pede para que eu formate a data, pois a mesma aparece em uma forma complicada de se ler quando eu acesso minha página…
abaixo segue minha pagina com a parte que eu estou tentando formatar a minha data, porém quando eu executo desta forma da o erro "java.text.ParseException: Unparseable date: “dataNascimento”.

<%<a class="mention" href="/u/page">@page</a> import=“java.text.SimpleDateFormat”%>

<%@ page language=java contentType=text/html; charset=ISO-8859-1

pageEncoding=ISO-8859-1%>

<%@ page import=“java.util.,br.com.caelum.dao.,br.com.caelum.modelo.,java.lang.” %>

<% ContatoDAO dao = new ContatoDAO(); List contatos = dao.getLista();
for (Contato contato : contatos) {
%>
	<tr>
		
		<td><%=contato.getNome()%></td>
		<td><%=contato.getEmail()%></td>
		<td><%=contato.getEndereco()%></td>
		<td><%=contato.getDataNascimento()%>
		<%
		String dataEmTexto = request.getParameter("dataNascimento");
		Date data = new SimpleDateFormat("dd/MM/yyyy").parse("dataNascimento");
			
		%>
		
		</td>
	<tr>
<%
    }
%>
CONTATOS

Desde já agradeço a ajuda.

11 Respostas

D

Está errado nessa parte

<blockquote>String dataEmTexto = request.getParameter(dataNascimento);

Date data = new SimpleDateFormat(dd/MM/yyyy).parse(dataNascimento); </blockquote>

não é .parse(dataNascimento); e sim .parse(dataEmTexto);
J

Fiz a alteração porém agora está acontecendo um NullPointerException…

GRAVE: Servlet.service() for servlet jsp threw exception

java.lang.NullPointerException

at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1235)

at java.text.DateFormat.parse(DateFormat.java:335)

at org.apache.jsp.lista_002dcontatos_002dscriptlet_jsp._jspService(lista_002dcontatos_002dscriptlet_jsp.java:94)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:662)

Grato pela ajuda

D

tem como você mostrar o código do seu servlet

J

djunigari, blz?
segue o meu servlet

package br.com.caelum.agenda.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.SQLException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;
import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import br.com.caelum.dao.ContatoDAO;
import br.com.caelum.modelo.Contato;

/**

  • Servlet implementation class AdicionaContatoServlet
    */
    public class AdicionaContatoServlet extends HttpServlet {

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      @Override
      protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException,
      IOException {
      // TODO Auto-generated method stub
      final PrintWriter out = response.getWriter();
    final String nome = request.getParameter(nome);
    
    final String endereco = request.getParameter(endereco);
    
    final String email = request.getParameter(email);
    
    final String dataEmTexto = request.getParameter(dataNascimento);
    
    Calendar dataNascimento = null;
    
    try {
    
    final Date date = new SimpleDateFormat(dd/MM/yyyy).parse(dataEmTexto);
    
    dataNascimento = Calendar.getInstance();
    
    dataNascimento.setTime(date);
    
    } catch (final java.text.ParseException e) {
    
    // TODO: handle exception
    
    out.println(Erro de conversão de data);
    
    return;
    
    }
    
    final Contato contato = new Contato();
    
    contato.setNome(nome);
    
    contato.setEndereco(endereco);
    
    contato.setEmail(email);
    
    contato.setDataNascimento(dataNascimento);
    
    final ContatoDAO dao = new ContatoDAO();
    
    try {
    
    dao.adiciona(contato);
    
    } catch (final SQLException e) {
    
    // TODO Auto-generated catch block
    
    e.printStackTrace();
    
    }
    
    out.println("");
    
    out.println("");
    
    out.println(Contato " + contato.getNome() + " adicionado com sucesso);
    

    }

}

D

pra que esses final?

No catch há um return indevido, pois seu método ele devolve void.

Sua sobrescrita ela provavelmente não irá funcionar, pois que eu lembre o método service não possui os argumentos com o final.

J

to seguindo os passos do exercicio…e tem esse catch nele

D

então juniorcapra, seu servlet tah com erros

A NullPointerException eh pq vc não esta passando nenhuma variável “dataNascimento” no request.

J

djunigari este erro acontece quando eu coloco esse pedaço de código

String dataEmTexto = request.getParameter(“dataNascimento”);
Date data = new SimpleDateFormat(“dd/MM/yyyy”).parse(dataEmTexto);

estou tentando formatar a data na minha jsp.

D

1º - Utilize o Code para formatar seu código aqui no guj e facilicar a leitura
2º - O uso de scriplets não é recomendado, evite ao máximo. Mas se para o seu exercício for necessário usar evite fazer a formatação na JSP, formate na servlet e somente exiba o valor na JSP

Bom, vamos ao erro…

A NullPointerException provavelmente ocorre pq o dataEmTexto está nulo.
Faça o teste trocando: String dataEmTexto = request.getParameter("dataNascimento");
Por: String dataEmTexto = "26/07/2012";

Em algum lugar da servlet você tem que setar o “dataNascimento” no request… onde vc está fazendo isso? não encontrei no seu código…
Deve ser algo assim:

request.setAttribute("dataNascimento", "27/07/2012");
D

djunigari:
pra que esses final?

No catch há um return indevido, pois seu método ele devolve void.

Sua sobrescrita ela provavelmente não irá funcionar, pois que eu lembre o método service não possui os argumentos com o final.

Sobre o que eu falei nesse post sua sobrescrita vai funciona sim, dei uma olhada melhor, porém não há necessidade do final nos parâmetros.

Entendi o do pq vc colokou o return.

Sua pagina não chama a Servlet AdicionaContato e a Servlet ela não está redirecionando para a pagina que está com erro.Provavelmente você nos mandou a servlet errada

J

Galera, obrigado pela ajuda,realmente a NullPointerException ocorre pq o dataEmTexto estava nulo.

Vlw pessoal…

Criado 21 de julho de 2012
Ultima resposta 26 de jul. de 2012
Respostas 11
Participantes 3