Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Conhecendo o RichFaces - Parte I

RichFaces é uma biblioteca de componentes para aplicações web que utilizam o framework JSF...

 

Introdução

RichFaces é uma biblioteca de componentes para aplicações web que utilizam o framework JSF. Os componentes desta biblioteca possuem um incrível suporte AJAX, e ela, pode ser considerada uma extensão do Ajax4jsf com inúmeros componentes com Ajax “embutido” e com um suporte a Skins que podem deixar as interfaces da sua aplicação com um visual padronizado.

 

Instalação

Primeiramente é necessário fazer o download do RichFaces de http://labs.jboss.com/jbossrichfaces. Logo após adicione as bibliotecas “richfaces-3.0.x.jar”, “ajax4jsf-1.1.0” e “oscache2.3.jar” na pasta WEB-INF/lib da sua aplicação.

 

O código da Listagem 01 mostra as configurações do filtro que devem ser inseridas no arquivo web.xml da aplicação.

 

<context-param>

  <param-name>org.ajax4jsf.SKIN</param-name>

  <param-value>blueSky</param-value>

</context-param>

<filter>

  <display-name>Ajax4jsf Filter</display-name>

  <filter-name>ajax4jsf</filter-name>

  <filter-class>org.ajax4jsf.Filter</filter-class>

</filter>

<filter-mapping>

  <filter-name>ajax4jsf</filter-name>

   <servlet-name>Faces Servlet</servlet-name>

   <dispatcher>REQUEST</dispatcher>

   <dispatcher>FORWARD</dispatcher>

   <dispatcher>INCLUDE</dispatcher>

</filter-mapping>

Listagem 01. Configuração do filtro.

 

Agora quando for necessário usar um componente do RichFaces basta adicionar uma das seguintes linhas no topo de suas paginas.

Para paginas JSP:

 

<%@ taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>

 

Para paginas XHTML (Facelets!):

<xmlns:rich="http://richfaces.ajax4jsf.org/rich">

 

Conhecendo alguns componentes

Nessa seção mostrarei como utilizar alguns dos principais componentes do RichFaces. Você irá notar a facilidade de implementação desses componentes e também a gama de aplicações em que eles podem ser empregados.

 

SuggestionBox

Tag: <rich:suggestionbox>

 

O SuggestionBox adiciona a capacidade de autocomplete em componentes h:inputText. Os atributos suggestionAction, for e var são os mais importantes desse componente. O primeiro aponta para uma action do managed bean que retorna uma coleção (List por exemplo), o segundo aponta em qual inputText será usado o suggestionbox, e o ultimo é a variável que representa um Objeto da coleção (similar ao var do dataTable).

 

<h:form>

<h:panelGrid columns="2">

        <h:outputText value="Nome:"/>

        <h:inputText value="" id="text"/>

        <rich:suggestionbox id="suggestionBoxId" for="text"

               suggestionAction="#{suggestionboxbean.complemento}"

               width="200" height="150" var="result">

        <h:column>

               <h:outputText value="#{result}"/>

        </h:column>

        </rich:suggestionbox>

</h:panelGrid>

</h:form>

Listagem 02. suggestionbox.jsp.

 

O código da Listagem 03 refere-se ao managed-bean que é usado pelo componente na Listagem 02.

 

public class SuggestionboxBean {   

    private List<String> lista;   

    public SuggestionboxBean() {

      lista = new ArrayList();

      //Aqui preencher a lista com nomes para testar.

    }

    public List<String> complemento(Object event){

      String prefixo = event.toString().toLowerCase();        

      List<String> retorno = new ArrayList();

      for(int pos = 0; pos < lista.size(); pos++){

          if(lista.get(pos).toLowerCase().startsWith(prefixo)){               

              retorno.add(lista.get(pos));

          }

      }

      return retorno;

    }

}

Listagem 03. SuggestionboxBean.java.

 

DataTableScroller

Tag: <rich:datascroller>

 

Este componente prove a funcionalidade de paginação a tabelas sendo que ele, diferentemente do componente do tomahawk, faz os requests via Ajax. O código da Listagem 04 mostra um exemplo de uso do datascroller que faz a paginação de uma tabela do richfaces.

 

<h:form>

<rich:dataTable value="#{datatablebean.lista}" var="pessoa"

id="tabela" rows ="4">

<h:column>

<f:facet name="header">

<h:outputText value="Nome"/>                           

</f:facet>

<h:outputText value="#{pessoa.nome}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Idade"/>

</f:facet>

<h:outputText value="#{pessoa.idade}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Sexo"/>

</f:facet>

<h:outputText value="#{pessoa.sexo}"/>

</h:column>

</rich:dataTable>

<rich:datascroller for="tabela" maxPages="20" />

</h:form>

Listagem 04. datascroller.jsp

 

PanelBar e PanelBarItem

Tag: <rich:panelBar> e <rich:panelBarItem>
 

O PanelBar é um componente em que você têm um agrupamento de painéis (PanelBarItens) onde, enquanto um painel está expandido os outros estão contraídos. Este componente não necessita de nenhum managed bean, pois ele não faz requests. Veja um exemplo na Listagem 05.

 

<f:view>

           <h:outputText value="Exemplo de uso do Panelbar."/><br/>

           <rich:panelBar>

               <rich:panelBarItem label="Produto 1">

                   <%--Conteúdo aqui--%>

               </rich:panelBarItem>

               <rich:panelBarItem label="Produto 2">

                   <%--Conteúdo aqui--%>

               </rich:panelBarItem>

               <rich:panelBarItem label="Produto 3">

                  <%--Conteúdo aqui--%>

               </rich:panelBarItem>

               <rich:panelBarItem label="Produto 4">

                   <%--Conteúdo aqui--%>

               </rich:panelBarItem>

           </rich:panelBar>

</f:view>

Listagem 05. panelbar.jsp

 

TabPanel

Tag: <rich:tabPanel>

 

O TabPanel adiciona páginas “com abas” a sua aplicação. A navegação entre essas abas pode ser feita de três maneiras, e para isso, basta mudar o valor do atributo switchType para um dos seguintes modos:

  • Modo normal: é feita uma requisição completa, onde toda página é recarregada.
  • Modo ajax: é feita uma requisição via Ajax, onde somente o painel é recarregado (reRender).
  • Modo client: nenhuma requisição é feita e o conteúdo das abas já deve estar previamente definido.

 

Na Listagem 06 é exemplificado o uso do componente tabPanel no modo Ajax.

 

<h:form id="form1">

<rich:tabPanel switchType="ajax">

<rich:tab label="Descrição">

<h:graphicImage value="#{bean.produto.imagem}"/><br/>

<h:outputText value="#{bean.produto.descricao}"/>

</rich:tab>

<rich:tab label="Detalhes">

<h:outputText value="#{bean.produto.preco}"/><br/>

<h:outputText value="#{bean.produto.parcelas}"/><br/>

<h:outputText value="#{bean.produto.peso}"/>

</rich:tab>                   

</rich:tabPanel>

</h:form>

Listagem 06. tabpanel.jsp

 

Conclusão

Neste artigo vimos como instalar o RichFaces em uma aplicação web que utiliza JavaServer Faces, bem como as facilidades na utilização de seus componentes e o incrível suporte Ajax que estes possuem. Nos próximos artigos desta série, irei mostrar mais componentes e também exemplos de como explorar o suporte a Skins que esta fantástica biblioteca possui.





    8 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Patrick Silva
estava batendo cabeça com icefaces, não consegui fazer nada, porém com esse artigo consegui dar os primeiros passos com ajax jsf, muit bom.


em 21/9/2007 16:02 - Responder

 

Juliherms
como faço pra rodar o richfaces no netbeans 5.5? estou tendo problemas, estou usando o netbeans 5.5 e o java server 9


em 15/10/2007 22:30 - Responder

 

Edno Cardoso
Poderia informar qual a versao das bibliotecas usadas? Achei muito interessante, porém nao consegui fazer com que o ajax4jsf funcionasse em alguma pagina


em 18/10/2007 18:58 - Responder

 

  Manoelson
Olá Edno. As dependencias que eu uso são essas: ok commons-beanutils.jar ok commons-collections.jar ok commons-digester.jar ok commons-logging.jar ok jstl.jar ok standard.jar ok jsf-api.jar ok richfaces-api-3.1.3.GA.jar ok richfaces-impl-3.1.3.GA.jar ok richfaces-ui-3.1.3.GA.jar ok jsf-impl.jar ok commons-el.jar


em 2/6/2008 15:23 - Responder
 

Edivan De Castro Soares
Parabéns pelos artigo estou ancioso pela parte II


em 13/4/2009 16:05 - Responder

 

Peixe
Muito bacana seu artigo, vale até a pena fazer uma video aula ...heheh :)


em 30/8/2007 10:10 - Responder

 

  Anderson Paes De Souza Azevedo
Muito boa a matéria mas você sabe como chamar templates dentro das abas ao invés de colocar o código?


em 29/10/2010 11:07 - Responder
 

  Dyego Souza Do Carmo
Opa !

Voce pode estar usando o VELOCITY para isto :)
Ele integra perfeitamente com o RitchFaces...

Ou o facelets direto:)





em 5/11/2010 08:25 - Responder
 



[Este post ainda não foi associado a uma sequência]
Autor
Rafael De Paula Souza

Rafael de Paula Souza (rafael.bnc@gmail.com), está cursando Engenharia de Computação na FURG. Atualmente faz estágio na área de soluções para Web em Java, utilizando JSF e demais frameworks.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
10   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03