Encontrei milagrosamente a solução para um problema que muiiitos estão passando.
Ao tentar enviar uma parâmetro String com acentos, espaços e cedilhas usando a biblioteca JavaScript do MentaAjax, como no exemplo:
Code:
var log = document.forms[0].logradouro.value; //Esse aqui.
alert('Logradouro: '+log);
var r = new mtw.request();
r.addParameter("logradouro", log);
r.setUrl("table.addEndereco.mtw");
r.onSuccess(
function(data){
var resp = new mtw.response(data);
resp.innerHTML("tabelaEnderecos");
}
);
r.send();
O value do input text enviado ao servidor chegava a sua action com caracteres especiais num formato que acredito não ser o UTF-8, usado pelo objeto ímplicito XMLHttpRequest presente nos browsers atuais.
Ao chegar a sua action, por mais que vc tentasse transformá-lo em ISO-8859-1 ou UTF-8, a resposta era sempre a mesma, caracteres estranhos.
A solução que encontrei foi, no momento do envio do value String, antes de enviá-lo ao servidor ou container, fazer o encoder dele através do método JavaScript encodeURI, nesse momento, vc estará forçando a conversão dos caracteres em UTF-8.
Code:
var log = encodeURI(document.forms[0].logradouro.value);
Com isso, vc garante que chegará na sua action um enconding no formato UTF-8, após isso, basta fazer o decoder na sua action com o uso da classe URLDecoder.
Code:
String logradouro = URLDecoder.decode(input.getStringValue("logradouro"), "UTF8");
System.out.println("Logradouro: "+logradouro);
Pronto, com isso vcs conseguiram exibir os acentos corretamente e cedilhas.
Espero ter contribuído para comunidade Menta e Java; e que essa informação seja útil a muitas pessoas no desenvolvimento com esse maravilhoso framework que é o MentaWai.
Abraço a todos.