SKIN do PrimeFaces está se perdendo

16 respostas
brunobuild

Pessoal,

Estou com um problema muito pontual em relação ao Skin do primefaces.

Eu tenho uma página que existe um menu. estou usando a seguinte tag

<p:menuitem value="Página Inicial" ajax="false" action="welcome" immediate="true" />

Porém quando navega para a próxima tela ele perde o skin, isso tanto para o Skin Default quanto para os demais

Segue o código da importanção do skin

<h:body>
		<h:outputStylesheet name="/themes/redmond/skin.css"/>
		<h:outputStylesheet name="style.css" />
		
		<h:form id="form"/>
		
		<ui:insert name="layout"/>
	</h:body>

16 Respostas

FkJ

http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=3774

brunobuild

Ainda não consegui resolver o problema estou fazendo a mesma coisa que eles estão explicando no site como postei no código

FkJ

Use a tag link. Exemplo:

<link type="text/css" rel="stylesheet" href="#{request.contextPath}/themes/cupertino/skin.css" />
brunobuild

Putz ainda não rolou, agora perdeu de vez o skin
fica dentro do head ou do body?

&lt;link type="text/css" rel="stylesheet" href="#{request.contextPath}/WebContent/resources/themes/redmond/skin.css" /&gt;
FkJ

Fica na head.

Remova o /WebContent da url.

brunobuild

Então o Skin funciona direitinho FkJ desse jeito que você me mandou muito obrigado pela atenção.

Mas quando eu faço a chamada pra outra página ele perde o SKIN perde os componentes perde tudo.

XHTML

&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
	template="/template/top.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:p="http://primefaces.prime.com.tr/ui"&gt;

	&lt;ui:define name="content"&gt;
		&lt;p:commandButton value="Cadastro" action="cadastro" immediate="true" ajax="false"/&gt;
	&lt;/ui:define&gt;
&lt;/ui:composition&gt;

FACES-CONFIG

&lt;navigation-rule&gt;
    	&lt;from-view-id&gt;*&lt;/from-view-id&gt;	
	&lt;navigation-case&gt;
		&lt;from-outcome&gt;cadastro&lt;/from-outcome&gt;
		&lt;to-view-id&gt;/cadastro.xhtml&lt;/to-view-id&gt;
	&lt;/navigation-case&gt;
&lt;/navigation-rule&gt;
FkJ

Bom, aqui deixo a tag link em um template. As demais páginas são construídas a partir dele.

Informo o caminho absoluto para o CSS conforme no exemplo. Tanto com regra de navegação quanto com url ta funcionando legal.

Por ser JSF 2 acho até que vc pode até remover a regra de navegação do XML.

To usando o PrimeFaces 2.2-RC2.

brunobuild

Eu acho que eu achei o que está acontecendo mas não sei como resolver.

Quando eu tiro o include e chamo direto ele funciona, eu estava usando o a4j:include do richfaces e funciona numa boa, mas eu gostaria de usar o primefaces

&lt;ui:define name="layout"&gt;
	&lt;ui:include src="/welcome.xhtml" /&gt;
&lt;/ui:define&gt;
viniciuspadua

resolveu o problema?
esta usando qual versão do primefaces?

O meu esta acontecendo o mesmo do link abaixo

http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=6437

rafaelvascon

No seu web.xml dá uma uma olhada nessa parte do código:

<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

No seu caso em vez de *.jsf será *.xhtml

No primefaces 2.2 - snapshot tive um problema com alguns componentes que não apareciam no chrome. Solução:
Colocar a tag <h:body> dentro de uma <f:view …

<f:view contentType="text/html">
    <h:body>
          ......
C

Basta colocar o css no header do welcome.xhtml

FkJ

Algumas sugestões:

  • Atualizar o primefaces pra versão 2.2.1
  • Mudar o parâmetro no web.xml de primefaces.SKIN para primefaces.THEME e informar o nome do tema. Depois substitua o tema que está descompactado na sua aplicação pelo tema disponível em arquivo jar. Essa configuração dispensa a importação do arquivo skin.css na página.
  • Pode ser necessário limpar o cache do navegador
Ewerton_Henrique

FkJ:
Algumas sugestões:

  • Atualizar o primefaces pra versão 2.2.1
  • Mudar o parâmetro no web.xml de primefaces.SKIN para primefaces.THEME e informar o nome do tema. Depois substitua o tema que está descompactado na sua aplicação pelo tema disponível em arquivo jar. Essa configuração dispensa a importação do arquivo skin.css na página.
  • Pode ser necessário limpar o cache do navegador

Eu estou fazendo isso exatamento como no site do primefaces.

Mas estou recebendo esse erro

javax.servlet.ServletException: Error loading theme, cannot find “theme.css” resource of “primefaces-redmond” library
javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67).

Oq será?

E

Algumas sugestões:

  1. Tem a tag h:head no seu template?
  2. [complementando a dica do FkJ] tem a tag
<context-param>  
        <param-name>primefaces.THEME</param-name>  
        <param-value>redmond</param-value>  
    </context-param>

no seu web.xml?
3. Se estiver usando o netbeans, dá um clean and build no projeto.

Ewerton_Henrique

evefuji:
Algumas sugestões:

  1. Tem a tag h:head no seu template?
  2. [complementando a dica do FkJ] tem a tag
<context-param>  
        <param-name>primefaces.THEME</param-name>  
        <param-value>redmond</param-value>  
    </context-param>

no seu web.xml?
3. Se estiver usando o netbeans, dá um clean and build no projeto.

template

<html xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.prime.com.tr/ui"
	xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets">


<h:head>
	<title>#{messages['main.app.title']}</title>
	  <link type="text/css" rel="stylesheet" href="/DelegaDemoiselle/css/styles.css" /> 
	   
</h:head>

<h:body>

...

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <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>*.jsf</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>
  
  <filter>
     <filter-name>Filtro</filter-name>
     <filter-class>xxxxx</filter-class>
  </filter>
  <filter-mapping>
     <filter-name>Filtro</filter-name>
     <url-pattern>/administrador/*</url-pattern>
  
  </filter-mapping>
  
  <context-param>    
    <param-name>primefaces.THEME</param-name>    
    <param-value>redmond</param-value>    
   </context-param>
  
    
  
       
    
</web-app>

O redmond-1.0.1.jar ja está junto com as outras bibliotecas no maven.

Obrigado!

Ewerton_Henrique

Minha ultima mensagem eu vi agora que deu a entender que o problema tenha sido resolvido
mas não foi eu so agredeci a ajuda do colega.

Criado 16 de dezembro de 2010
Ultima resposta 27 de out. de 2011
Respostas 16
Participantes 7