VRaptor 3.4 + Acentuação

2 respostas
fabio.cbrandao

Uma coisa que sempre me assombrou a vida inteiro foi acentuação quebrada fazia um bom tempo q eu já não apanhava mais com isso.

Desenvolvi minha aplicação inteira no ambiente local e tudo perfeito, quando enviei minha aplicação para o ambiente de produção uma VPS com sistema CentOS e Tomcat 7 o problema começou. No Ar minha aplicação está quebrando toda a acentuação do projeto, aquelas mensagens que você utiliza no VRaptor Validator dentro do Controller qnd retornam pra JSP estão quebradas.

A minha dúvida é oq será q é? já que minha aplicação funciona local será q é alguma configuração dos frameworks ou web.xml ou será que é meu server CentOS.

Alguém já passou por isso?

aqui é meu web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID">	
	<display-name>Emprego</display-name>
	
	<distributable/>
	
	<context-param>   
    	<param-name>br.com.caelum.vraptor.encoding</param-name>   
    	<param-value>UTF-8</param-value>   
	</context-param>
	
	<context-param>       
    	<param-name>br.com.caelum.vraptor.packages</param-name>       
        <param-value>   
                 br.com.bronx.vraptor.restrictrex
        </param-value>      
	</context-param>
	
	<!-- Localização do arquivo de configuração do Core -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/emprego-context.xml
		</param-value>
	</context-param>

	<!--
		Configuração do Log4J. Para o JBoss, devemos comentar este trecho.
	-->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>
			file:///home/tiempreg/var/brandom/emprego/config/log4j.properties
		</param-value>
	</context-param>
	
	<context-param>
		<param-name>log4jExposeWebAppRoot</param-name>
		<param-value>false</param-value>
	</context-param>

	<!--
		Configuração do Log4J. Para o JBoss, devemos comentar este trecho.
	-->
	<listener>
		<description>Listener para configurar Log4J</description>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

	<!-- Listener para configurar Spring -->
	<listener>
		<description>Listener para configurar Spring</description>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!--<listener>
	  <listener-class>br.com.supportcomm.virtualgoods.listener.Agenda</listener-class> 
	</listener>-->
	
	<!-- Servlet que processa as requisições -->
	<servlet>
		<description>Servlet do Emprego</description>
		<display-name>Emprego</display-name>
		<servlet-name>services</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				/WEB-INF/appconfig-context.xml
				/WEB-INF/emprego-servlet.xml
			</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>services</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
	
	<filter>
		<filter-name>vraptor</filter-name>
		<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>vraptor</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>
	
	<!-- Filtro para aplicar o charset encoding ao request -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<servlet-name>services</servlet-name>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>

	<session-config>
		<session-timeout>300</session-timeout>
	</session-config>

	<resource-ref>
		<res-ref-name>jdbc/tiempregos</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
		
</web-app>

2 Respostas

guivirtuoso

Fabio,

Passei por algo semelhante recentemente…

Meu web.xml está configurado exatamente como o seu neste ponto…

&lt;context-param&gt;     
        &lt;param-name&gt;br.com.caelum.vraptor.encoding&lt;/param-name&gt;     
        &lt;param-value&gt;UTF-8&lt;/param-value&gt;     
    &lt;/context-param&gt;

O detalhe que fez diferença, é que o Ambiente de Produção, um CentOS também … tem Encoding UTF-8 nativo, sendo necessário converter os arquivos que tem as mensagens p/ codificação UTF-8 também.

Até onde entendi, essas configurações de enconding no web.xml e nas paginas JSP, serve apenas para os dados trocados entre o Response e o Request. Para o caso de leitura de arquivo em disco, o arquivo tem que estar no encoding do SO senão nada feito.

Tente editar o arquivo com as mensagens em algum editor tipo o Notepad++, que tem a opcão p/ Converter os caracteres p/ tipo desejado. :wink:

Lucas_Cavalcanti

dá uma olhada se o banco de dados está em UTF-8 também

Criado 19 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 2
Participantes 3