[Resolvido] Vraptor + AJAX com Jquery + sitemesh = problemas com encoding

Opa pessoal…

ja perdi algum tempo tentando descobrir oq estou fazendo errado no meu proj.
Vou postar aqui os códigos que acho que podem gerar o erro de encoding

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">


	<context-param>
		<param-name>br.com.caelum.vraptor.encoding</param-name>
		<param-value>UTF-8</param-value>
	</context-param>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>

	<filter>
		<filter-name>vraptor</filter-name>
		<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>

	<filter>
		<filter-name>sitemesh</filter-name>
		<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>sitemesh</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>vraptor</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>


	<jsp-config>
		<jsp-property-group>
			<url-pattern>*.jsp</url-pattern>
			<page-encoding>UTF-8</page-encoding>
			<include-prelude>/WEB-INF/jsp/prelude.jspf</include-prelude>
		</jsp-property-group>
	</jsp-config>
	
	<error-page>
    	<error-code>404</error-code>
    	<location>/WEB-INF/jsp/erro/erro404.jsp</location>
	</error-page> 
</web-app>

decorator.jsp:

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"
	prefix="decorator"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

...

exemplo de uma função Jquery usando a função ajax():


function cadastroCliente(){
	$.ajax({
		type : 'GET',
		url : '/site/cliente/cadastro',
		success : function(txt) {
			$("#bodyDiv").html(txt)
			closeErrorMessage();
		},
		error : function(txt) {
			showErrorMessage(txt.responseText)
		}
	});
}

O código html que está na página decorator.jsp não apresenta erros na codificação,
mas o html gerado nas requisições AJAX vêem descodificadas…

Alguem conhece o motivo?

Obrigado

qual versão do VRaptor?

Lucas,

estou usando o vraptor-3.3.1.jar

Obrigado

Cara vc ta esquecendo de setar o tipo de reposta de sua requisição, na sua chamada Ajax…tenta setar isso: datatype:“html”, essa propriedade é um dosagumentos de sua requisição Ajax…As repostas podem ser desde texto a um Json, setando o tipo de resposta, vc garente que eles venham encodados corretamente!

clincks, tá dando erro na hora de enviar ou de receber a resposta ajax?

[quote=starkiller]Cara vc ta esquecendo de setar o tipo de reposta de sua requisição, na sua chamada Ajax…tenta setar isso: datatype:“html”, essa propriedade é um dosagumentos de sua requisição Ajax…As repostas podem ser desde texto a um Json, setando o tipo de resposta, vc garente que eles venham encodados corretamente!
[/quote]

Starkiller, imagino que o caminho seja por ae msm, pois apenas as páginas carregas pelas funções ajax estão com o charset errado.

Tentei sua solução, mas também nao funcionou. Já tentei esses argumentos abaixo para a função ajax e não funcionou

$.ajax({
		type : 'GET',
		url : '/site/cliente/cadastro',
		datatype: 'html',
		contentType: 'text/html;charset=UTF-8',
		scriptCharset: 'utf-8' ,
                //....

Lucas,
na resposta ajax, os caracteres especiais veem todos com o famoso ‘?’

tenta ver no firebug (instale ele no seu firefox se não tiver) e veja os cabeçalhos de resposta

Lucas, não apresenta nenhum erro…
veja que o request e o response está em utf-8.

[URL=http://imageshack.us/photo/my-images/15/71456068.png/][/URL]

Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]

se vc trocar pra POST ele vai com o encoding certo?

Lucas,

sua pergunta resolveu o problema.
Inseri no banco strings com caracteres especiais e na listagem eles foram exibidos corretamente.

Só apareciam decodificados os textos que estavam em algumas páginas .jsp.

O problema era que alguns aquivos estavam gravados como ISO.

Valeu a ajuda…
Até +