Facelets: template com imagem = Invalid byte 1 of 1-byte UTF-8 sequence

3 respostas
H

Olá pessoal!
Meu projeto não estava configurado pra abrir uma página automaticamente, então alterei meu web.xml pra isso:

<?xml version="1.0" encoding="ISO-8859-1"?>
[...]
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.jspx</param-value>
  </context-param>
  <welcome-file-list>
    <welcome-file>faces/login.jspx</welcome-file>
  </welcome-file-list>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
[...]

Ok. Agora ao digitar http://localhost:8080/meuprojeto, a página login.jspx é aberta como esperado.
O problema é que isso está causando erros na exibição de imagens que o meu template.jspx usa. E antes funcionava.

No meu template tenho este trecho de código:

<?xml version="1.0" encoding="ISO-8859-1"?>
[...]
<f:facet name="controls">
    <h:panelGroup>
        <h:graphicImage
            value="../imagens/erro.png"
            id="hidelink" />
    </h:panelGroup>
</f:facet>
[...]

Não importa como eu informe o caminho pra imagem, o seguinte erro é lançado ao tentar exibí-la no browser:

SEVERE: Error Rendering View[/imagens/erro.png]
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
	at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.arrangeCapacity(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipString(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
[...]

E claro, a imagem não é exibida.
As imagens referenciadas nas páginas jspx que usam o template são exibidas sem problemas, somente as que são referenciadas dentro do template.jspx é que causam esse erro.

A estrutura de diretórios que estou utilizando é essa:

web
|___	templates
|___	imagens
|___	pages
login.jspx

Bom, já pesquisei e não encontrei nada que me ajudasse.
Estou utilizando ISO-8859-1 como codificação, mas tentei UTF-8 e nada resolveu.

Preciso de ajuda.
Agradeço antecipadamente por qualquer dica.

Obrigado.

Tecnologias utilizadas:
JSF 1.2; Facelets 1.1.14; RichFaces 3.3.0; Tomcat 6; Java 6.

3 Respostas

H

Hmmm… notei que o problema não é só no template.
Páginas que uso no ui:include e que possuam imagens referenciadas causam o mesmo problema.
Tá muito estranho.

dbconrado

Estou tendo o mesmo problema…

Alguém já descobriu o por que? :frowning:

dbconrado

Cara, por Deus, descobri! :smiley:

retire o “dois pontos” da url da sua imagem. Se estava assim: value="…/imagens/erro.png", altere para “/imagens/erro.png”.

Eu acho que, quando se utiliza facelets, não pode acessar imagens pelo /faces/*, sabe? Tipo, não dá pra acessar /faces/imagens/erro.png, mas só /imagens/erro.png.

é o que eu acho :roll:

[]'s

Criado 7 de março de 2009
Ultima resposta 12 de jul. de 2009
Respostas 3
Participantes 2