Tenho um formulário com um input que serve de filtro e uma listagem dos resultados em baixo utilizando displaytag.
O problema é que quando filtro com algum texto que contenha acento, o displaytag monta a baseUrl com caracteres do tipo: “%c3%a7” (que corresponde ao “ç”).
Como posso ajustar isso? Meu vraptor esta configurado para utilizar ISO-8859-1.
<!--web.xml-->
<context-param>
<param-name>br.com.caelum.vraptor.encoding</param-name>
<param-value>ISO-8859-1</param-value>
</context-param>
E assim está minha jsp com o problema de acentos:
<form id="form" action="${linkTo[ApplicationController].filter}" method="POST">
<input type="text" name="applicationFilter.name" value="${applicationFilter.name}" />
<input type="hidden" name="_method" value="POST" />
<button type="button" onclick="filterApplication();">${bundle['search']}</button>
<button type="button" onclick="newApplication();">${bundle['add.new']}</button>
</form>
<ajax:displayTag id="expenseTypeResults">
<display:table name="pagingResults" uid="item" requestURI="/application/filter" class="its" style="width:50%;">
<display:column style="width: 95%;" property="name" title="${bundle['application.name']}" url="/application/${item.id}" sortable="true" />
<display:column style="width: 5%;">
<img src="<c:url value='/img/delete.png' />" onclick="deleteApplication(${item.id});" style="cursor:pointer;" />
</display:column>
</display:table>
</ajax:displayTag>
O input “applicationFilter.name” é o que da o problema quando digito acentos e tento ordenar a lista do display tag.
A url que o displaytag monta é a seguinte:
onclick="new AjaxJspTag.OnClick({baseUrl: "/metrica/application/filter?sort=name&dir=asc&applicationFilter.name=Aplica%C3%A7%C3%A3o+A&_method=POST", eventBase: this, requestHeaders: ['x-request-target', 'expenseTypeResults'], target: "expenseTypeResults"}); return false;"
E na minha controladora, o atributo name chega desta maneira:
Aplica%C3%A7%C3%A3o
os arquivos jsp estão com o encoding iso-8859-1?
tenta colocar o <%@page no começo da página falando o encoding tb.
(vc consegue um exemplo disso dando um new >> JSP no eclipse)
[quote=Lucas Cavalcanti]os arquivos jsp estão com o encoding iso-8859-1?
tenta colocar o <%@page no começo da página falando o encoding tb.
(vc consegue um exemplo disso dando um new >> JSP no eclipse)[/quote]
Lucas,
Seguindo o que você falou, colocando o encoding iso-8859-1 na jsp e na configuração do vraptor resolveu o problema.
Pelo que pesquisei, vi que utilizar UTF-8 seria melhor por aceitar todos tipos de caracteres, sendo assim alterei todas as configurações(jsps e web.xml) para UTF-8. Mas com está configuração ao ordenar a lista do DisplayTag os acentos eram transformados em caracteres “malucos”.
Pesquisei na internet(sem querer fechei o site e não me lembro a fonte) e o problema também está na configuração do Tomcat. A partir da versão 5 do tomcat, o padrão de encoding das URIs não é UTF-8.
Para configurar isto basta abrir o arquivo server.xml e configurar a tag com o atributo “URIEncoding” para UTF-8.
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />
Pronto, resolveu meu problema. Estou utilizando UTF-8 em toda a aplicação.
Indo para outro problema, Lucas você uma maneira de efetuar o mesmo que o AjaxTags só que utilizando JQuery? O AjaxTags utiliza o Prototype, e eu não gostaria de manter as duas libs de javascript na aplicação.
[]'s
um dos jeitos: baixe o código fonte do AjaxTags, e mude todas as chamadas ajax pro $.ajax do JQuery
não conheço algo equivalente usando jquery… na verdade eu costumo usar os plugins JQuery pra tabelas ao invés do displaytag
[quote=Lucas Cavalcanti]um dos jeitos: baixe o código fonte do AjaxTags, e mude todas as chamadas ajax pro $.ajax do JQuery
não conheço algo equivalente usando jquery… na verdade eu costumo usar os plugins JQuery pra tabelas ao invés do displaytag[/quote]
Você pode disponibilizar um exemplo de utilização?
É tão fácil de utilizar quanto displaytag?
Codifiquei todo o backend para efetuar a paginação e ordenação de forma automatica com o displaytag. Você acha que consigo reaproveitá-lo facilmente com esses plugins?
sim, em geral vc gera uma tabela normal html e ele se vira pra fazer paginação e ordenação.
http://datatables.net/
talvez vc só tenha que mudar a forma em que os dados são mostrados, mas não é mto difícil mudar não, vc vai aproveitar a maioria das coisas