Google retorna a página com uma Exception

24 respostas
laelsonc

Aê galera, quanto tempo !
Bom, eu tenho um blog que é feito em Java. O lance é que quando eu pesquiso no Google ele retorna:

PÁGINA DE ERROS
 - 08:35
PÁGINA DE ERROS. Erro encontrado: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: In <parseDate>, a parse ...
www.segurem-se.com.br/ - 1k - Em cache - Páginas Semelhantes

Só que a página esta ok. POdem pesquisar por SEGUREM-SE ou acessarem www.segurem-se.com.br.
Tentei cadastrar no AdSense e ja me retornaram umas 10 vezes dizendo q a página não existe.
Esse problema já tem um tempinho, não foi dessa semana, tem uns dois meses.
É esquisito, porque coloquei outra página outro dia, que também esta ok, mas no Google retornava isso ai.
Alguém passou por algo parecido ?

Um abraço !

24 Respostas

laelsonc

Alguém ?

victorwss

Tem certeza que a data funciona corretamente de acordo com o locale do usuário?
Por exemplo, aqui no Brasil usamos dia/mês/ano. Tem certeza que vai funcionar com mês/dia/ano ou com ano-mês-dia?

Por ser erro em parseDate e funcionar ok para você, suspeito ser problema de internacionalização.

laelsonc

Acho que faz sentindo o que vc falou.
A página é simples, e olha o código que recuro do banco para mostrar a data da forma correta com JSTL:

<span class="cinza"> <fmt:parseDate value="${Con.conDataCriado}" pattern="yyyy-MM-dd mm:ss" var="D" /> ${Con.catNome} em <fmt:formatDate value="${D}" pattern="dd-MM-yyyy mm:ss" />h</span><br> <span class="titulo">${Con.conTitulo}</span>

Só pode ser isso ai.
O que fazer ?

laelsonc

E ai pessoal, me ajuda senão o dono do blog me esgana !!..rsrs

leandronsp

E se mudar o pattern da linha 2 para o formato como o victor disse?

laelsonc

Fiz com o pattern MM-dd-yyyy e também com dd-MM-yyyy e ambos me deram uma resposta similiar a do Google quando depurei:

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: In <parseDate>, value attribute can not be parsed: "2009-03-08 10:51:45.0"

OU seja, o erro é realmente nesta linha.
Alguém sabe alguma variação para recuperar a data do banco que vem 2009-04-01 para o padrão Brasil com JSTL ? Esta maneira ai foi a que eu descobrir para burlar, mas creio que deve haver uma outra simples.

laelsonc

Galera, me acuda ai !!!

B

O tipo do dado no banco é um Date, Timestamp?

laelsonc

Sim, no banco esta tipo “2008-12-24 15:28:37”

B

Bem, você pega um objeto do tipo Date do banco, coloca num atributo data de um objeto, que também possui um getter para ele, depois passa esse objeto para a página, onde tem uma tag:

<fmt:formatDate value="${objeto.data}" pattern="dd/MM/yyyy"/>
laelsonc

Agradeço, mas se vc ler acima, vai ver que isso foi o que fiz e que estou fazendo.

celso.martins

Não está faltando a hora no seu pattern?

<span class="cinza">  
   <fmt:parseDate value="${Con.conDataCriado}" pattern="yyyy-MM-dd mm:ss" var="D" />  
                    ${Con.catNome} em <fmt:formatDate value="${D}" pattern="dd-MM-yyyy mm:ss" />h</span><br>  
                     <span class="titulo">${Con.conTitulo}</span>
victorwss

laelsonc:
Acho que faz sentindo o que vc falou.
A página é simples, e olha o código que recuro do banco para mostrar a data da forma correta com JSTL:

<span class="cinza"> <fmt:parseDate value="${Con.conDataCriado}" pattern="yyyy-MM-dd mm:ss" var="D" /> ${Con.catNome} em <fmt:formatDate value="${D}" pattern="dd-MM-yyyy mm:ss" />h</span><br> <span class="titulo">${Con.conTitulo}</span>

Só pode ser isso ai.
O que fazer ?

De onde você tira Con.conDataCriado?

Por sinal, porque você usa mm:ss ao invés de HH:mm ou de HH:mm:ss que faria muito mais sentido?

laelsonc

Eu tiro do FOR -
<c:forEach items="${conteudo}" var=“Con”>

Que conteudo por sua vez vem do Servlet, dos meus objetos.

Quanto a hora no pattern, esta sim.

B

Fiz um testes aqui, a exceção.

javax.servlet.jsp.JspException: An error occurred while evaluating custom action attribute “value” with value “${data}”: Attempt to convert String “09/04/01” to type “java.util.Date”, but there is no PropertyEditor for that type (null)

Dei uma olhada no Javadoc dessa tag, ela fala que o tipo da variável deveria ser java.util.Date, e não String.

O Javadoc do Netbeans diz que armazena a variável como String.

Parece um bug na implementação.

laelsonc

Eita, e agora. Vo ter que votlar a usar os splits da vida de novo é…

B

Uma coisa que não entendo é por que você está usando uma variável para colocar a data, e não imprime diretamente:

<span class="cinza"> <%-- <fmt:parseDate value="${Con.conDataCriado}" pattern="yyyy-MM-dd mm:ss" var="D" /> --%> ${Con.catNome} em <fmt:formatDate value="${Con.conDataCriado}" pattern="dd-MM-yyyy hh:mm:ss" />h</span><br> <span class="titulo">${Con.conTitulo}</span>

laelsonc

Para alterar para nosso padrão. Por que tentei somente

<fmt:formatDate value="${Con.conDataCriado}" pattern="dd-MM-yyyy mm:ss" />

E não funcionou, erro.

victorwss

laelsonc:
Para alterar para nosso padrão. Por que tentei somente

<fmt:formatDate value="${Con.conDataCriado}" pattern="dd-MM-yyyy mm:ss" />

E não funcionou, erro.

Con.conDataCriado é do tipo String?

laelsonc

É sim.

B

Bem, pode ser uma String, mas deve ser no mesmo formato daquela imprimida pelo método toString do java.util.Date. Em outras palavras, use um Date.

victorwss

Tem certeza que você não esqueceu de colocar o “HH:” no pattern?
Ah e tem que ser HH maiúsculo.

Se você já fez isso, posta aí como o código está atualmente porque já estou meio confuso.

laelsonc

Olha, é cmo falei o código é isto aqui:

<fmt:parseDate value="${Con.conDataCriado}" pattern="yyyy-MM-dd mm:ss" var="D" /> <fmt:formatDate value="${Con.conDataCriado}" pattern="dd-MM-yyyy mm:ss" />

Eu pego o valor do obejeto, criei uma variavel no parseDate e depois manipulei ela no formatDate.

Agora, realmente não estava usando a Hora.
Tentei entao colocar no pattern yyyy-MM-dd HH:mm:ss, mas também não funciona.

Tentei colocar yyyy-MM-dd HH:mm:
Deu o erro de novo:

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: In <parseDate>, value attribute can not be parsed: "2008-12-24 15:28:37.0"

Olha, roda belezinha o primeiro exemplo, pode entrar no site e ver. O problema é o GOOGLE.

laelsonc

Someone ??

Criado 29 de março de 2009
Ultima resposta 12 de abr. de 2009
Respostas 24
Participantes 5