Problema com IceFaces Facelets e Codificação UTF-8

7 respostas
S

pessoal estou usando facelets e IceFaces mas não posso usar nenhum acento ou cedilha nas letras que aparece o seguinte erro

org.apache.jasper.JasperException: javax.faces.FacesException: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 3-byte UTF-8 sequence.
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

como posso resolver isso? preciso dos acentos na minha aplicação1

7 Respostas

M

mude o encoding das tuas páginas jsf para iso-8859-1.

Espero ter ajudado

S

Mas como eu mudo?? eu nunca tinha usado facelets e nunca criei um documento Jsp.

aqui está a minha página:

<jsp:root
   jsfc="f:view"
   xmlns:jsp="http://java.sun.com/JSP/Page"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:ice="http://www.icesoft.com/icefaces/component"
   xmlns:ui="http://java.sun.com/jsf/facelets"
   xmlns:c="http://java.sun.com/jstl/core"
   xmlns:fn="http://java.sun.com/jsp/jstl/functions">

<ice:outputDeclaration
   doctypeRoot="html"
   doctypePublic="-//W3C//DTD XHTML 1.0 Transitional//EN"
   doctypeSystem="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
   
   <html>
       <head>
         <title>ICEfaces, Ajax for Java EE</title>
         <link rel="stylesheet" type="text/css" href="./xmlhttp/css/xp/xp.css" />
         <link rel="stylesheet" type="text/css" href="CSS/styleMain.css" />
       </head>

       <body>
                   <p>Ç teste</p>
       </body>
   </html>
</jsp:root>
o tentei usar um meta no HTML
<meta http-equiv="content-type"  content="text/html; charset=UTF-8"/>
mas não adiantou! Agora não dá erro mas os caracteres aparecem estranhos!
M

Eu coloquei a linha abaixo no inicio do meu xhtml ou jspx e funfuou legal

<?xml version="1.0" encoding="ISO-8859-1" ?>
S

pois eu coloquei uma

<jsp:directive.page contentType=“text/html; charset=UTF-8”/>

e ele também dá erro!!

cara a sua solução funcionou mas apenas com UTF-8 e ainda assim só funciona se eu empacotar a solução em um ice:outputText/

se eu colocar normalmente como na página que eu mostrei acima aparecem caracteres estranhos!!

como faço para eles funcionarem em qualquer situação??

J

s3v3r1n0:
pois eu coloquei uma

<jsp:directive.page contentType=“text/html; charset=UTF-8”/>

e ele também dá erro!!

cara a sua solução funcionou mas apenas com UTF-8 e ainda assim só funciona se eu empacotar a solução em um ice:outputText/

se eu colocar normalmente como na página que eu mostrei acima aparecem caracteres estranhos!!

como faço para eles funcionarem em qualquer situação??

Passei por esse mesmo problema, resolvi usando message-bundle

Coloca <?xml version="1.0" encoding="ISO-8859-1" ?> no topo do jspx (caso esteja usando).

e no arquivo .properties pode colocar com acentos q funciona.

caso tenha duvidas de como usar o messa-bundle, aí vai um link.

http://www.laliluna.de/javaserver-faces-message-resource-bundle-tutorial.html

falow.

R

Message bundle é a melhor coisa pra resolver isso, mas se não der pra usar tenta fazer assim, a maioria dos componentes tem um atributo chamado escape. Sea ele para escape=false e os caracteres que vc precisa acentuar vc usa os codigos de caracter especial html
& c c e d i l;
& a t i l d e; e por ai vai.
Vai nafé que da certo.

R

.

Criado 27 de agosto de 2008
Ultima resposta 3 de dez. de 2008
Respostas 7
Participantes 4