rich:panel não é exibido (Facelets)

47 views
Skip to first unread message

Henrique Ribeiro Rezende

unread,
Nov 5, 2009, 4:56:26 PM11/5/09
to jav...@googlegroups.com
Pessoal,
Estou com um problema num site que eu fiz com Facelets + Richfaces.
O rich:panel simplesmente não quer aparecer... o conteudo dele é renderizado corretamente, inclusive os componentes rich, a4j, h e f dentro dele.

Vou postar o código e os arquivos de configuração... Se puder, confirmem se o código está correto (As bib's estão todas corretas tbm)

Página de login (Desta página vou para outra usando Facelets, em que o panel TBM não quer renderizar):
<?xml version='1.0' encoding='UTF-8' ?>
<!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>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Tela de Login</title>
        <link href="./css/default.css" rel="stylesheet" type="text/css" />
    </head>
   
    <body>
        <rich:panel id="loginPanel">
            <f:facet name="header">
                Cadastro de Usuários - Tela de Login
            </f:facet>

            <a4j:form>
                <rich:messages globalOnly="true" styleClass="center"
                               errorClass="rich-message" infoClass="info-message" />
                <h:panelGrid styleClass="center" columns="2" cellspacing="3px"
                             rowClasses="left, left, right">
                    <h:outputText value="Usuário:"/>
                    <h:inputText id="inputUser" value="#{loginC.usuario.usuario}" />
                    <h:outputText value="Senha:"/>
                    <h:inputSecret id="inputPass" value="#{loginC.usuario.senha}" />
                    <br />
                    <h:commandButton action="#{loginC.validarLogin}" value="Entrar" />
                </h:panelGrid>
            </a4j:form>
        </rich:panel>
      </body>
</html>

Se precisar posto o web.xml e o faces-config.xml também... mas aparentemente eles estão de acordo com a documentação.

Obrigado.

Davinir F Campos Jr

unread,
Nov 5, 2009, 5:20:02 PM11/5/09
to jav...@googlegroups.com
Cadê o view/composition/... ?

2009/11/5 Henrique Ribeiro Rezende <henrique...@gmail.com>

Bruno Maomeh

unread,
Nov 6, 2009, 7:22:03 AM11/6/09
to jav...@googlegroups.com
cara.. não consegui ver nada de anormal.. tenta deixar só o rich:panel na página.. pra ver oqe acontece.. isolar os componente..

2009/11/5 Davinir F Campos Jr <davin...@gmail.com>



--
Bruno Maomeh
  http://brunomaomeh.wordpress.com

Davinir F Campos Jr

unread,
Nov 6, 2009, 8:13:23 AM11/6/09
to jav...@googlegroups.com
view -> Setting up a page (do J2EE 1.4 Tutorial)

A page containing JavaServer Faces tags is represented by a tree of components. At the root of the tree is the UIViewRoot component. The view tag represents this component on the page. Thus, all component tags on the page must be enclosed in the view tag, which is defined in the jsf_core TLD:

<f:view>
  ... other JavaServer Faces tags, possibly mixed with other
  content ...
</f:view>

E pra template e reutilização (o Henrique disse que estava usando Facelets):

composition -> Templating and re-use (de JSFCentral)


[ ]s
J

2009/11/6 Bruno Maomeh <bruno...@gmail.com>

Bruno Maomeh

unread,
Nov 6, 2009, 8:35:30 AM11/6/09
to jav...@googlegroups.com
corrijam me se eu estiver errado.. mas acho qe não é necessário o f:view com o facelets..

2009/11/6 Davinir F Campos Jr <davin...@gmail.com>

Davinir F Campos Jr

unread,
Nov 6, 2009, 8:41:32 AM11/6/09
to jav...@googlegroups.com
Está corretíssimo, mas daí vc usaria essa tua página como template (tag insert) ou template client (tag composition) né?

Ou não era hortelã no suco de abacaxi com hortelã que eu acabei de tomar? :-)

Renan Montenegro

unread,
Nov 6, 2009, 8:52:51 AM11/6/09
to jav...@googlegroups.com
Quando se usa Facelets, realmente não se é necessário a utilização da tag <f:view.

Bruno Maomeh

unread,
Nov 6, 2009, 9:12:59 AM11/6/09
to jav...@googlegroups.com
quando se usa templates.. vc não é obrigado a usar o insert.. que ficaria como uma "pagina normal", e não um template..
mas realmente não faz muito sentido vc usar um template sem o ui:insert.. mas não há obrigatoriedade nisso..

a não ser qe eu esteja enganado.. :)

Henrique Ribeiro Rezende

unread,
Nov 6, 2009, 9:39:03 AM11/6/09
to jav...@googlegroups.com
Primeiramente, obrigado pelas respostas... =)

Seguinte... O problema é que eu não preciso usar template para esta primeira página, pois é uma página só de login, por isso não convém criar um template qualquer com <ui:insert>, e depois colocar minha página em um <ui:composition> <ui:define> (Eu tentei fazer isso de teste e mesmo assim não funcionou).

Tentei colocar o <f:view> - não funcionou
Tentei colocar só o <ui:composition> e depois a pag normal - não funcionou (e simplesmente ignorou o meu css)

Nenhum componente Richfaces quer renderizar corretamente. Por exemplo, eu joguei um <rich:pickList> só de teste e ele não renderizou corretamente, apesar de suas funcionalidades estarem funcionando corretamente.

Como pode ser tão complicado assim? To tomando birra de Facelets! rsrs
Basicamente eu só tava implementando um "sisteminha" como o tópico do Rafael Ponte. A única diferença é que eu acrescentei essa página de login antes.

Bruno Maomeh

unread,
Nov 6, 2009, 9:45:53 AM11/6/09
to jav...@googlegroups.com
só nessa página de login está com esse problema? ou todas as páginas? se forem todas.. muito possivelmente é problema de configuração

2009/11/6 Henrique Ribeiro Rezende <henrique...@gmail.com>

Henrique Ribeiro Rezende

unread,
Nov 6, 2009, 9:54:26 AM11/6/09
to jav...@googlegroups.com
Todas.
Só o rich:dataTable está renderizando corretamente no página seguinte. Os outros componentes rich não renderizam certo.

Já virei e desvirei o web.xml e o faces-config.xml e PARECE estar correto. Olhei na documentação.

Bruno Maomeh

unread,
Nov 6, 2009, 10:02:12 AM11/6/09
to jav...@googlegroups.com
muito estranho.. poderia tirar uns screamshot das telas.. e mostrar as configurações?

2009/11/6 Henrique Ribeiro Rezende <henrique...@gmail.com>
Todas.

Só o rich:dataTable está renderizando corretamente no página seguinte. Os outros componentes rich não renderizam certo.

Já virei e desvirei o web.xml e o faces-config.xml e PARECE estar correto. Olhei na documentação.



Henrique Ribeiro Rezende

unread,
Nov 6, 2009, 10:17:59 AM11/6/09
to jav...@googlegroups.com
web.xml:


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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">
   
    <context-param>
        <param-name>org.richfaces.SKIN</param-name>
        <param-value>blueSky</param-value>
    </context-param>
    <context-param>
        <param-name>org.richfaces.CONTROL_SKINNING</param-name>
        <param-value>enable</param-value>
    </context-param>

    <filter>
        <display-name>RichFaces Filter</display-name>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    <context-param>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>facelets.SKIP_COMMENTS</param-name>
        <param-value>false</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>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>forward.jsp</welcome-file>
    </welcome-file-list>
    </web-app>


Eu mudei o facelets.SKIP_COMMENTS para false aí ele renderizou corretamente, pensei que tinha achado a solução
Mudei para true para confirmar e ele NÃO renderizou... aí voltei para false e ele NÃO renderizou... então não deve ser isso... =/

faces-config.xml:


<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2"
    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-facesconfig_1_2.xsd">

    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>

    <managed-bean>
        <managed-bean-name>loginC</managed-bean-name>
        <managed-bean-class>controlador.LoginController</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>usuarioC</managed-bean-name>
        <managed-bean-class>controlador.UsuarioJpaController</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>templateClientBean</managed-bean-name>
        <managed-bean-class>bean.templateClientBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

    <navigation-rule>
        <from-view-id>/login.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>index</from-outcome>
            <to-view-id>/index.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <navigation-case>
            <from-outcome>login</from-outcome>
            <to-view-id>/login.xhtml</to-view-id>
            <redirect/>
        </navigation-case>
    </navigation-rule>

    <lifecycle>
        <phase-listener>autenticacao.AuthorizationListener</phase-listener>
    </lifecycle>
   
</faces-config>

Henrique Ribeiro Rezende

unread,
Nov 6, 2009, 11:05:00 AM11/6/09
to jav...@googlegroups.com
Uma observação importante:

Se eu logo na página de login e sou redirecionado para a outra página e lá eu dou Ctrl + F5 (apagar o cache e atualizar a página)
Ela renderiza corretamente.
Se eu dou Ctrl + F5 na página de logine, entro na outra página e dou Ctrl + F5 já não dá certo...

Tem alguma coisa de errada com essa página de login... =/

Davinir F Campos Jr

unread,
Nov 6, 2009, 11:07:11 AM11/6/09
to jav...@googlegroups.com
Que doideira...
Bom, tenta com o DEVELOPMENT true, e depois volta pra false (igual vc fez com o SKIP_COMMENTS.

E as versões?

[ ]s
J


2009/11/6 Henrique Ribeiro Rezende <henrique...@gmail.com>
Uma observação importante:

Davinir F Campos Jr

unread,
Nov 6, 2009, 10:11:21 AM11/6/09
to jav...@googlegroups.com
Henrique, aproveita e posta o web e o faces-config e a versão (VM, RichFaces, tá usando tomcat?)

[ ]s
J

2009/11/6 Bruno Maomeh <bruno...@gmail.com>
muito estranho.. poderia tirar uns screamshot das telas.. e mostrar as configurações?

Davinir F Campos Jr

unread,
Nov 6, 2009, 11:52:29 AM11/6/09
to jav...@googlegroups.com
Olha só, eu uso JSF 1.2_13, Facelets 1.1.15, RichFaces 3.3.2 SR1, JPA/Hibernate (EntityManager 3.4.0), e Spring 2.5.6.SEC01, entre outras coisas. Tudo isso rodando num Tomcat 6.0.20.


web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
         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">
    <!-- JSF & Facelets -->

    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.expressionFactory</param-name>
        <param-value>org.jboss.el.ExpressionFactoryImpl</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>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    <context-param>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>facelets.SKIP_COMMENTS</param-name>
        <param-value>true</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>*.jsf</url-pattern>
    </servlet-mapping>

    <!-- Richfaces -->
    <context-param>
        <param-name>org.richfaces.SKIN</param-name>
        <param-value>classic</param-value>
    </context-param>
    <context-param>
        <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
        <param-value>com.sun.facelets.FaceletViewHandler</param-value>
    </context-param>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-config.xml</param-value>

    </context-param>
    <filter>
        <display-name>RichFaces Filter</display-name>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
        <init-param>
            <param-name>createTempFiles</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>maxRequestSize</param-name>
            <param-value>1000000</param-value>
        </init-param>

    </filter>
    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

    <!-- Spring -->
    <filter>
        <filter-name>JPA Filter</filter-name>
        <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>JPA Filter</filter-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <!-- General -->

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

faces-config.xml:

<?xml version="1.0"?>

<faces-config version="1.2"
              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-facesconfig_1_2.xsd">

    <!-- nonono -->
    <navigation-rule>
        <navigation-case>
            <from-outcome>nononoList</from-outcome>
            <to-view-id>/nononoList.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <navigation-case>
            <from-outcome>nononoForm</from-outcome>
            <to-view-id>/nononoForm.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>

    <application>
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
        <locale-config>
            <default-locale>pt_BR</default-locale>
            <supported-locale>pt_BR</supported-locale>
            <supported-locale>es</supported-locale>
            <supported-locale>en</supported-locale>
        </locale-config>
    </application>
</faces-config>

Então, como vc pode ver, Henrique, não tem nada de diferente do seu (a grosso modo, somente a parte de Spring).

O redirecionamento é feito por HTML puro no index.html, que redireciona para index.xhtml, que já é JSF.

Para identificação, no template principal tem um modalpane com id loginModalPane, acionado conforme a necessidade.

Os componentes (ManagedBeans, ...) são configurados e injetados pelo Spring.

Aqui tudo funciona normal, Ajax ou full-request. Usamos template pra tudo, né.

[ ]s
J

Rafael Ponte

unread,
Nov 6, 2009, 12:03:17 PM11/6/09
to jav...@googlegroups.com
Bacana ver outras pessoas levando a sério a integração do Spring com JSF na lista.

Quando não se pode usar JBoss Seam com JSF, hoje em dia, a melhor combinação mesmo é Spring com JSF :-) Isso inclui tudo o que o Spring pode te fornecer, claro.

Guice também é uma boa pedida para trabalhar com JSF.

2009/11/6 Davinir F Campos Jr <davin...@gmail.com>
Olha só, eu uso JSF 1.2_13, Facelets 1.1.15, RichFaces 3.3.2 SR1, JPA/Hibernate (EntityManager 3.4.0), e Spring 2.5.6.SEC01, entre outras coisas. Tudo isso rodando num Tomcat 6.0.20.



--
Rafael Ponte
http://www.rponte.com.br

Davinir F Campos Jr

unread,
Nov 6, 2009, 12:20:32 PM11/6/09
to jav...@googlegroups.com
;-)

O projeto começou com Spring (aliás, o certo é "começou sem Seam") e usamos como target o Tomcat (temos uma versão "personalizada" dele). Usamos o Spring pra tudo, configuração de transações,

Quero olhar mais de perto o Guice, mas não vai rolar para os projetos de 2010, pelo menos ainda não temos pretensão.

Já usamos alguns códigos da Google (a Guava), o pessoal lá manda muito bem.

[ ]s
J


2009/11/6 Rafael Ponte <rpo...@gmail.com>

Rafael Ponte

unread,
Nov 6, 2009, 12:22:14 PM11/6/09
to jav...@googlegroups.com
O que você chama de versão personalizada do Tomcat? Fiquei curioso :-)

2009/11/6 Davinir F Campos Jr <davin...@gmail.com>
;-)

Davinir F Campos Jr

unread,
Nov 6, 2009, 12:40:11 PM11/6/09
to jav...@googlegroups.com
:-) Tranquilo.

Bom, alguns pequenos "ajustes" nos fontes, aqui e ali, pouca coisa, pra amarração. A maior diferença mesmo são os jars dos frameworks que usamos, tudo no Tomcat, então nosso war fica minúsculo (temos casos de aplicações menores que 100Kb).

Como é uma aplicação Java, a instalação é uma ignorância né: só descompactar o zip...

Henrique Ribeiro Rezende

unread,
Nov 6, 2009, 2:16:53 PM11/6/09
to jav...@googlegroups.com
Davinir, tem como vc postar o nome das bibliotecas que está usando (inclusive as commons)? Tirar um print, ou algo do gênero... rs

Eu estou usando JSF 1.2_13, Facelets 1.1.14, RichFaces 3.3.1 GA, JPA/Tomahawk1.1.8

TubaFTC, não deu não

Estranho, porque quando ele mostra certo, eu atualizo (Ctrl + F5) aí ele volta pro problema, quando eu passo da tela de login e atualizo depois, ele renderiza certo... ou seja, está muito inconstante isso.

To quase deixando a tela inicial com html puro viu! rsrs

Davinir F Campos Jr

unread,
Nov 6, 2009, 2:36:20 PM11/6/09
to jav...@googlegroups.com
Aqui da minha máquina:

06/03/2009  16:10            55.817 activation.jar
14/05/2009  01:15            10.807 annotations-api.jar
23/04/2007  12:53           717.666 ant-1.5.1.jar
13/06/2008  13:09           443.432 antlr-2.7.6.jar
20/08/2008  11:20            16.777 asm-attrs.jar
20/08/2008  11:20            26.360 asm.jar
11/07/2007  14:39           281.694 bsh-2.0b4.jar
21/05/2007  15:05           610.790 c3p0-0.9.1.2.jar
21/05/2007  15:05             2.686 c3p0-oracle-thin-extras-0.9.1.2.jar
14/05/2009  01:15            49.147 catalina-ant.jar
14/05/2009  01:15           123.820 catalina-ha.jar
14/05/2009  01:15           230.149 catalina-tribes.jar
05/06/2009  15:55             7.982 catalina-ws.jar
11/08/2009  01:11         1.204.662 catalina.jar
01/08/2009  20:27           322.362 cglib-nodep-2.2.jar
01/06/2009  22:31           231.320 commons-beanutils-1.8.0.jar
06/03/2009  16:10           571.259 commons-collections-3.2.jar
06/03/2009  16:10           121.757 commons-dbcp-1.2.2.jar
06/03/2009  16:10           143.602 commons-digester-1.8.jar
23/04/2007  12:53            96.529 commons-javaflow-20060411.jar
06/03/2009  16:10            52.915 commons-logging-1.1.jar
06/03/2009  16:10           106.911 commons-modeler-2.0.jar
06/03/2009  16:10            62.086 commons-pool-1.3.jar
06/03/2009  16:10           138.956 commons-validator-1.3.1.jar
13/06/2008  13:10           208.048 ehcache-1.2.3.jar
06/03/2009  16:10            12.822 ejb.jar
14/05/2009  01:15            27.814 el-api.jar
27/05/2009  00:44            72.009 el-impl-1.0.jar
18/04/2008  16:24         2.841.345 groovy-all-1.5.5.jar
20/08/2008  10:27           279.714 hibernate-annotations-3.4.0.jar
20/08/2008  11:20            66.993 hibernate-commons-annotations-3.4.0.jar
20/08/2008  11:20         2.266.769 hibernate-core-3.4.0.jar
20/08/2008  11:19           119.292 hibernate-entitymanager-3.4.0.jar
10/06/2009  15:31            29.654 hibernate-memcached-1.1.0.jar
10/09/2008  13:01            62.574 hibernate-validator-3.1.0.jar
23/04/2007  12:54           262.152 hsqldb-1.7.1.jar
23/04/2007  12:54           533.085 jakarta-bcel-20050813.jar
14/05/2009  01:15           103.201 jasper-el.jar
14/05/2009  01:15         1.395.266 jasper-jdt.jar
14/05/2009  01:15           513.722 jasper.jar
22/06/2009  17:20           597.476 javassist-3.9.0.GA.jar
14/06/2007  12:45           226.915 jaxen-1.1.1.jar
27/05/2009  00:57           681.941 jaybird-full-2.1.6.jar
27/05/2009  00:57            81.887 jaybird-pool-2.1.6.jar
02/08/2009  21:35           133.493 jboss-el-2.0.1.GA.jar
05/01/2009  16:41           309.294 jcommon-1.0.15.jar
06/03/2009  16:10             6.727 jdbc2_0-stdext.jar
06/03/2009  16:10            25.998 jms.jar
06/03/2009  16:10           243.258 jmx.jar
20/08/2008  11:20            50.583 jpa-1.0.jar
02/07/2009  15:53           360.504 jsf-api-1.2_13.jar
27/09/2007  11:20           300.771 jsf-facelets-1.1.14.jar
02/07/2009  15:53           841.338 jsf-impl-1.2_13.jar
14/05/2009  01:15            76.608 jsp-api.jar
27/05/2009  00:44            20.682 jstl.jar
13/06/2008  13:09            13.236 jta-1.1.jar
22/08/2007  13:39           294.726 jtds-1.2.2.jar
25/08/2007  01:29           391.834 log4j-1.2.15.jar
06/03/2009  16:10           354.133 mail.jar
21/10/2008  04:02           709.922 mysql-connector-java-5.1.7-bin.jar
21/06/2009  20:36         1.988.051 ojdbc6.jar
21/06/2009  20:41           475.580 postgresql-8.3-604.jdbc4.jar
06/03/2009  16:09           462.272 quartz-all-1.6.5.jar
08/10/2008  17:44           986.423 rhino-1.7R1.jar
09/10/2009  14:03           174.815 richfaces-api-3.3.2.SR1.jar
09/10/2009  14:03         1.557.854 richfaces-impl-3.3.2.SR1.jar
09/10/2009  14:25         4.438.278 richfaces-ui-3.3.2.SR1.jar
23/04/2007  12:53            18.817 saaj-api-1.3.jar
14/05/2009  01:15            88.209 servlet-api.jar
23/06/2009  02:25            23.445 slf4j-api-1.5.8.jar
20/08/2008  11:20             8.620 slf4j-log4j12.jar
21/04/2009  09:32         2.949.032 spring-2.5.6.SEC01.jar
27/05/2009  00:44           393.259 standard.jar
14/05/2009  01:15           750.470 tomcat-coyote.jar
14/05/2009  01:15           197.445 tomcat-dbcp.jar
14/05/2009  01:15            66.144 tomcat-i18n-es.jar
14/05/2009  01:15            43.742 tomcat-i18n-fr.jar
14/05/2009  01:15            49.021 tomcat-i18n-ja.jar
05/06/2009  15:55            22.941 tomcat-juli-adapters.jar
05/06/2009  15:55            60.740 tomcat-juli.jar

Note que coloquei o catalina.jar em destaque, porque o nosso vai ser diferente do seu. :-)
Essa minha versão ainda não é o ambiente completo, nem a última versão.

[ ]s
J


2009/11/6 Henrique Ribeiro Rezende <henrique...@gmail.com>
Davinir, tem como vc postar o nome das bibliotecas que está usando (inclusive as commons)? Tirar um print, ou algo do gênero... rs

Henrique Ribeiro Rezende

unread,
Nov 9, 2009, 5:01:56 PM11/9/09
to jav...@googlegroups.com
Descobri o que está causando este problema ao renderizar o rich:panel. É meio bizarro... mas é isso ae... rs

Vou demorar um pouquinho para explicar, mas se tiverem paciencia ^^



Estou utilizando um PhaseListener para essa minha tela de login. Ele está assim:

public class AuthorizationListener implements PhaseListener {

    public void afterPhase(PhaseEvent event) {
        System.out.println("afterPhase: " + event.getPhaseId());

        FacesContext facesContext = event.getFacesContext();
        String currentPage = facesContext.getViewRoot().getViewId();

        System.out.println("currentPage: " + currentPage);

        boolean isLoginPage = (currentPage.lastIndexOf("/login.xhtml") > -1);
        boolean isRichFacesPage = (currentPage.lastIndexOf("/css/") > -1);
        HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
        Object currentUser = session.getAttribute("currentUser");

        System.out.println("isLogin? " + isLoginPage);
        System.out.println("isRich? " + isRichFacesPage);
        System.out.println("currentUser: " + currentUser);


        if (!isRichFacesPage && !isLoginPage && currentUser == null) {
            System.out.println("==========Redirecionar usuário==========");

            NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
            nh.handleNavigation(facesContext, null, "login");
        }
    }

    public void beforePhase(PhaseEvent event) {
    }

    public PhaseId getPhaseId() {
        return PhaseId.ANY_PHASE;
    }
}

Tirei daqui, http://www.rodrigolazoti.com.br/?p=56.
(ele já está alterado para solução que eu pensei).

O que acontece é que quando eu acabo de abrir uma página que nunca foi aberta no cliente, o richfaces executa algumas fases para carregar o css de seus componentes, e na verificação

"if (!isLoginPage && currentUser == null) {"

ele retorna true, pois isLoginPage vai ser false (negando fica true) e currentUser está como null.
currentUser é um atributo de sessão que só vai ser setado com o nome do usuário após o usuário e senha estarem corretos.

Voltando... como a verificação é true ele redireciona para a página de login novamente impedindo o richfaces de passar por estas páginas.

Para resolver esse problema eu acrescentei mais uma verificação isRichFacesPage que verifica se é uma página de css do richfaces. Se for, ele não vai redirecionar evitando o problema da skin do rich:panel.

Para entender melhor é só dar uma olhada no "debug" que eu fiz, que mostraria algo do tipo:
afterPhase: RESTORE_VIEW 1
currentPage: /login.xhtml
isLogin? true
isRich? false
currentUser: null

afterPhase: RENDER_RESPONSE 6
currentPage: /login.xhtml
isLogin? true
isRich? false
currentUser: null

afterPhase: RESTORE_VIEW 1
currentPage: /org/richfaces/renderkit/html/css/basic_both.xcss
isLogin? false
isRich? true
currentUser: null

afterPhase: RENDER_RESPONSE 6
currentPage: /org/richfaces/renderkit/html/css/basic_both.xcss
isLogin? false
isRich? true
currentUser: null

afterPhase: RESTORE_VIEW 1
currentPage: /css/panel.xcss
isLogin? false
isRich? true
currentUser: null

afterPhase: RENDER_RESPONSE 6
currentPage: /css/panel.xcss
isLogin? false
isRich? true
currentUser: null


Enfim... se alguém tiver uma solução mais elegante ou até uma explicação melhor para isto, me avise por favor.

Considerem problema resolvido (tem como add isso no titulo do tópico?)

Obrigado.
Reply all
Reply to author
Forward
0 new messages