Struts 2 problema acentuação

21 respostas
R

Fala galera,

Seguinte estou utilizando struts 2 em uma aplicação mas estou com um problema serio… quando posto um fomulário as letras com acentos estão sendo substituida por caracteres estranhos e o pior isso só ocorre em formulario que existe o campo file para upload.

Ja tentei de tudo mas acredito que o problema deve estar no interceptor fileupload mas não achei uma solução, já tentei de tudo setar o acceptcharset no form … e todas as minhas paginas estão com o charset para iso-8859-1.

Se alguem tiver uma ideia … ja tentei de tudo to ficando louco já … .

obrigado …

até mais …

[]'s

Rodrigo

21 Respostas

A

Também estou com o mesmo problema…
help ai pessoal…

H

Olá

faça o teste colocando no struts.xml :

<constant name="struts.i18n.encoding" value="LATIN1" />

Abçs

Herrera

R

Cara você salvou minha vida … tava querendo brincar de roleta russa ja rsrs …

funcionou velho vlw …

[]'s

A

Opaa…
Pra min também deu certo…

Obrigado!!!

No meu projeto essa minha tag fica no struts.properties

# Tamanho máximo para upload (10 MB). struts.multipart.maxSize = 10485760 struts.i18n.reload=false struts.configuration.xml.reload=false struts.url.includeParams = none struts.i18n.encoding=LATIN1

R

É por isso que gosto desse fórum =D

M

Caramba… Parece mágica isso… ahaha
Valeu grande Herrera!

J

Isso resolveu o meu problema também!!
VALEU!!!

B

O que seria de nós desenvolvedores se não nos ajudássemos…? :slight_smile:

Valeu!!! Não tinha passado por este problema, e nem vou passar pois aprendi mais uma…

M

Isso é verdade…
Na maioria das vezes algumas (e poucas) frases podem salvar uma noite de sonos!

D

Obrigadão valeu mesmo !! salvou a minha pele !! mais ou noite de sono !!!

M
Estou tendo um problema parecido com este, so que é na gravação dos dados.

O meu banco esta em UTF-8;

O struts e o hibernate estão com o charset UTF-8;

Na visualização das paginas e dos dados esta OK os acentos. so que na hora que vou gravar os acentos estão saindo errado.

Exemplo: Preço grava Preço

Fiz alguns testes de envio de dados, o envio esta correto.

So que na classe chega Preço

Na minha maquina Windows rodando com o Netbeans 6.1 e acessando o mesmo banco funciona.

Isso so acontece no linux.

Alguem tem uma ideia?

R

Já tentou fazer como foi sujerido mais acima? Talvez trocar LATIN1 por UTF-8?

M

Ja coloquei tudo em ISO-8859-1, UTF-8 e LATIN1 mas continua dando o mesmo problema, o estranho que localmente na minha maquina funciona 100%, minha maquina esta no windows, o servidor de produção esta em linux.

D

Consegui resolver o meu problema usando o ISO-8859-1 com o LATIN1

[ ]'s

M

Quais arquivos vc mudou, e que charset vc colocou em cada um?

D

Adicionei esse código nas minhas paginas JSP

<%@ page contentType=“text/html; charset=iso-8859-1” pageEncoding=“LATIN1” %>

e no struts properties alterei os seguintes codigo

struts.locale=pt_BR
struts.i18n.encoding=LATIN1

e arrumou o problema da acentuação.

M

Fiz um teste com o Showcase do struts e descobri que é um problema nele mesmo, mas é algo que ele pega do servidor, no caso esta no linux.

L

Estou com o mesmo problema de acentuação. Tenho a action:

package actions.comum;

import org.hibernate.Query;
import org.hibernate.Session;

import com.opensymphony.xwork2.ActionSupport;

import beans.comum.Acao;
import utils.banco.ConectaBanco;

public class AJavascript extends ActionSupport{

	private Session bd = ConectaBanco.getInstance();
	
	private String conteudo;
	private String acao;
	
	public String execute(){
		
		Query q = bd.createQuery("FROM Acao a WHERE a.acao=:acao");
		Acao a = (Acao)q.setString("acao", getAcao()).uniqueResult();
		
		if(a!=null){
			
			setConteudo("function init(){ alert('Existe uma ação com esse nome no banco'); }");
			
		}else{
		
			setConteudo("function init(){ alert('NÃO Existe uma ação com esse nome no banco'); }");
			
		}
		
		return SUCCESS;
		
	}


	public void setConteudo(String conteudo) {
		this.conteudo = conteudo;
	}


	public String getConteudo() {
		return conteudo;
	}


	public void setAcao(String acao) {
		this.acao = acao;
	}


	public String getAcao() {
		return acao;
	}
	
}

O que acontece. Estou fazendo um teste para imprimir uma mensagem em javascript quando a página carrega. Só que quando a mensagem é exibida ela aparece assim:

function init(){ alert('N& # x C 3 ;O Existe uma a & # x E 7 ;& # x E 3;o com esse nome no banco'); }

Não exatamente assim pq eu tive que separar os caracteres para vocês verem a bagunça.

O Javascript imprime a mensagem exatamente como ela vem. Não faz nenhuma conversão. E também nem da para fazer, pois com essa Action, carregarei arquivos Javascripts completos dinamicamente na página.

Alguem pode me ajudar com isso?

[]´s

L

UP

L

Consegui resolver.

Na verdade quando eu imprimo na View, eu pego a propriedade “conteudo” da Action e utilizo a taglib <s:property value=“conteudo” /> para imprimir.

Quando faço isso, o Struts imprime os caracteres de acentuação codificados. Para desfazer isso utilizem <s:property value=“conteudo” escape=“false”/>

Abraço.

C

Gente socorro…
Já estou a dois dias tentando resolver isso e não da certo. Estou num projeto na empresa e la tivemos o mesmo problema. Então criei um projetinho aqui em casa pra tentar solucionar o problema, mas até agora nada.

coloquei no web.xml porque no projeto da empresa usamos apenas anotação, ai não tem o arquivo struts.xml.

<init-param>
  	<param-name>struts.i18n.encoding</param-name>
  	<param-value>LATIN1</param-value>
  </init-param>

assim tb

<init-param>
  	<param-name>struts.i18n.encoding</param-name>
  	<param-value>UTF-8</param-value>
  </init-param>

Mas mesmo assim não resolveu. alguem ai pode ajudar?

Criado 24 de fevereiro de 2008
Ultima resposta 10 de ago. de 2012
Respostas 21
Participantes 11