Richfaces: problema com CSS e UTF-8

16 respostas
Luiz_Aguiar

Seguinte, to com uns errinhos toscos aqui num projeto, estou migrando ele pro richfaces, ele inicialmente estava feito com tomahowk+tiles, estou passando pra richfaces.

seguinte, os css que sempre funcionaram:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<link type="text/css" rel="stylesheet" href="../css/blabla1.css">
<link type="text/css" rel="stylesheet" href="../css/blabla2.css">
</head>
Agora não estão sendo "carregados":
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
	  xmlns:rich="http://richfaces.org/rich">
	  
<head>
<link type="text/css" rel="stylesheet" href="../css/blabla1.css">
<link type="text/css" rel="stylesheet" href="../css/blabla2.css">
</head>

As páginas com acentuação, estão retornando um erro também:

Invalid byte 2 of 4-byte UTF-8 sequence.

que não aparece quando os caracteres "especiais" são removidos, fiz uns testes mas não resolveu.

Quem já trabalha com o Richfaces tem alguma dicas sobre essas besteirinhas ai?

Valeu!

16 Respostas

Javabuntu

cara eu uso RichFaces + Facelets…e passei por um problema IGUAL ao seu, e no MEU caso as mudanças abaixo resolveram…

ANTES de qualquer linha eu adicionei:

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

e na declaração do css tive que retirar o type, ficando assim:

<link rel="stylesheet" href="../BLABLABLA.css" />

no seu caso tudo isso seria assim:

<?xml version="1.0" encoding="ISO-8859-1"?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
   <html xmlns="http://www.w3.org/1999/xhtml"  
         xmlns:ui="http://java.sun.com/jsf/facelets"  
         xmlns:h="http://java.sun.com/jsf/html"  
         xmlns:f="http://java.sun.com/jsf/core"  
         xmlns:a4j="http://richfaces.org/a4j"  
         xmlns:rich="http://richfaces.org/rich">  
           
   <head>  
   <link  rel="stylesheet" href="../css/blabla1.css">  
   <link  rel="stylesheet" href="../css/blabla2.css">  
  </head>

mas repetindo…funcionou comigo no netbeans…como caso, é um caso. testa ai…vê se dá certo, boa sorte! :smiley:

p.s agora vi na taglib q vc tmb ta usando facelets, então deve funcionar…

flw Hewerton

paulovittor23

Javabuntu:
cara eu uso RichFaces + Facelets…e passei por um problema IGUAL ao seu, e no MEU caso as mudanças abaixo resolveram…

ANTES de qualquer linha eu adicionei:

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

Eu tbm tive o mesmo problema, e resolvi da mesma maneira…

Mas isso me intrigou, pq na teoria UTF-8 não teria que reconhecer a acentuação normalmente ?

Javabuntu

paulovittor23:

Mas isso me intrigou, pq na teoria UTF-8 não teria que reconhecer a acentuação normalmente ?

pior…nunca pesquisei sobre o q poderia ser exatamente…tudo que testei foi que quando usei Facelets…deu problema… tirava o facelets…tudo resolvido… a princípio no meu caso tive a certeza que foi algo relacionado com o facelets… mas o pq ainda é mistério…
flw Hewerton

Leozin

só pra ter certeza:

você está usando facelets né?

Luiz_Aguiar

Quanto ao UTF-8, não funcionou, adicioneu a linha sugerida, mas a mensagem é outra agora, indicando o mesmo problema aparentemente:

Erro no processamento de XML: entidade não definida

Usuário:

Log do tomcat:

o CSS continua igual, sem carregar.

estranho…

Luiz_Aguiar

Leozin:
só pra ter certeza:

você está usando facelets né?


Sim…

Leozin

você pode colocar o encoding ISO-8859-1 no teu template, mas pelo que ví, as páginas que não são templates tem que ser UTF-8

mas eu não ví problemas de acentos com o UTF-8 e facelets (ainda)

Luiz_Aguiar

Tentei com:

<a4j:loadStyle src="../css/blabla.css" />

e tbm num foi…

L

Tente isto amigo

&lt;link rel="StyleSheet" type="text/css" href="css/tabelas.css" media="screen" &gt;
paulovittor23

Estou usando facelets tbm, e meu include do css está feito como citado acima pelo lgweb.

Luiz_Aguiar

Muito estranho, não vai nem o css e nem a acentuação.

Alias, se não fechar “/>” a tag link da um erro no xhtml e nem renderiza.

Será alguma entrada no faces-config? o meu esta basicamente o padrõa que vem na documentação do Richfaces, só tem o managed-beans a mais.

Cabazzo

Olha eu uso Richfaces com Facelets e faço assim:

Como o outro amigo falou coloque esta linha no template e em todas as páginas:

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

No caso do CSS vc pode fazer um dinâmico criando uma página xhtml com o css:

[color=blue]
ui:composition

#topo{ background-image : url(${facesContext.externalContext.requestContextPath}/img/topo.jpg); background-repeat: no-repeat; padding-top: 0; position: relative; height: 76px; background-color: #C3D9FF; } .footer{ balckground: #ffffff; } .rich-message-label { color:red; } .rich-panel-body{ background-color:#FFF; }

</ui:composition>

[/color]

e no template colocar essa tag dentro do HEAD:

[color=blue]<ui:include src="/css/dinamic-css.xhtml" />[/color]

Comigo funcionou.

Luiz_Aguiar

Eu já havia testado isso tbm, testei novamente, e continua igual…

no meu web.xml tem apenas essa entrada referente a isso:

<context-param>
	<param-name>org.richfaces.LoadStyleStrategy</param-name>
	<param-value>ALL</param-value>
</context-param>
<context-param>
	<param-name>org.richfaces.LoadScriptStrategy</param-name>
	<param-value>ALL</param-value>
</context-param>
paulovittor23

Luiz Aguiar:
Eu já havia testado isso tbm, testei novamente, e continua igual…

no meu web.xml tem apenas essa entrada referente a isso:

<context-param> <param-name>org.richfaces.LoadStyleStrategy</param-name> <param-value>ALL</param-value> </context-param> <context-param> <param-name>org.richfaces.LoadScriptStrategy</param-name> <param-value>ALL</param-value> </context-param>

olhei no meu web.xml e não tem esses parâmetros :frowning:
depois vou ver a documentação pra ver a função deles.

meu web.xml tah assim:

<?xml version="1.0" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         version="2.5">
    
    <!-- Ajax4jsf -->
    
    <context-param>
        <param-name>org.richfaces.SKIN</param-name>
        <param-value>blueSky</param-value>
    </context-param>
    
    <!-- Seam -->
    
    <listener>
        <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
    </listener>
    
    <filter>
        <filter-name>Seam Filter</filter-name>
        <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>Seam Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <servlet>
        <servlet-name>Seam Resource Servlet</servlet-name>
        <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Seam Resource Servlet</servlet-name>
        <url-pattern>/seam/resource/*</url-pattern>
    </servlet-mapping>
    
    <!-- Facelets development mode (disable in production) -->
   
    <context-param>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>true</param-value>
    </context-param>
    
    <!-- JSF -->
   
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.seam</url-pattern>
    </servlet-mapping>
    
    <security-constraint> 
        <display-name>Restrict raw XHTML Documents</display-name>
        <web-resource-collection>
            <web-resource-name>XHTML</web-resource-name>
            <url-pattern>*.xhtml</url-pattern>
        </web-resource-collection>
        <auth-constraint/>
    </security-constraint>
    
    <!-- Improving JSF performance in Seam Applications = BEGIN -->
    <context-param>
        <param-name>org.jboss.seam.core.init.debug</param-name>
        <param-value>false</param-value>
    </context-param>   
    
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>	
    
    <context-param>
        <param-name>facelets.BUFFER_SIZE</param-name>
        <param-value>500000</param-value>
    </context-param>	
    
    <filter>
        <display-name>Ajax4jsf Filter</display-name>
        <filter-name>ajax4jsf</filter-name>
        <filter-class>org.ajax4jsf.FastFilter</filter-class>
        <init-param>
            <param-name>forceparser</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>ajax4jsf</filter-name>
        <url-pattern>*.seam</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    
    <!-- Improving JSF performance in Seam Applications = END -->
    
</web-app>
andericbraz

Na verdade Luiz o que acontece é que você está utilizando a versão mais atual do Facelets e Rich Faces e esta pelo que parece tem problemas com UTF-8. Temos aplicativos que utilizam a versão anterior e funcionam perfeitamente com acentuação, porém ao migrarmos para a nova versão encontramos estes problemas com o encoding e estamos correndo atrás para consultar a documentação… qualquer novidade, posto aqui o resultado. Até!

wbjava

Eu utilizei a dica do nosso amigo e funcionou.

&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;

Estou usando RichFaces juntamente com JBoss Seam.

Abraço.

Criado 30 de janeiro de 2008
Ultima resposta 2 de jul. de 2008
Respostas 16
Participantes 8