RichFaces é uma biblioteca de componentes para aplicações web JSF que facilita o uso de Ajax e permite criar interfaces ricas com suporte a skins. Ela fornece inúmeros componentes prontos com funcionalidade Ajax embutida.
2. RichFaces 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 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.
3. RichFaces Vantagens Facilita o uso de Ajax É totalmente integrado com o ciclo de vida do JSF Cria rapidamente telas complexas Cria interface rica com usurário com look-and-feel e skins Cria componentes , actione listeners.
4. RichFaces Para usar o RichFaces 3.3.1 é necessário: Java > 1.5 JavaServer Faces Java application server ou servlet container Browser (client side) RichFaces framework
11. Exercício 1 Configurar o RichFaces em uma aplicação JSF Utilizar o richPanel para testar a instalação. <rich:panel> <f:facet name="header"> Cadastro </f:facet> OK, RichFaces funcionando </rich:panel>
12. RichFaces AjaxSupport É o mais importante componente do RichFaces. Ele permite adicionar ajax em componentes sem recurso de ajax Deve ser inserido diretamente como filho de outro componente. Seus atributos chaves são: 'event' e 'reRender' <h:form id="myform"> <h:panelGrid columns="2"> <h:inputText id="myinput" value="#{userBean.name}"> <a4j:support event="onkeyup" reRender="outtext" /> </h:inputText> <h:outputText id="outtext" value="#{userBean.name}" /> </h:panelGrid> </h:form>
13. Exercício 2 Utilizar o ajaxSupport para mudar o valor de um objeto conforme vai apertando cada tecla Utilizar o ajaxSupport para mudar o valor de um objeto ao sair do campo
14. RichFaces AjaxValidation É um componente desenvolvido para validações ajax dentro de componentes Input, é semelhante ao a4j:support , mas ele pula todas fases do JSF exceto validação. <h:inputText value="#{user.name}" required="true" id="t“ validatorMessage="Nome inválido"> <f:validateLength maximum="30" minimum="3"/> <rich:ajaxValidator event="onblur"/> </h:inputText> <rich:message for="t"/>
15. Exercício 3 Utilizar o ajaxValidation para validar campos de entrada de dados Utilizar o rich message <rich:message for=“name" > <f:facet name="passedMarker"> <h:graphicImage value="passed.gif" /> </f:facet> <f:facet name="errorMarker"> <h:graphicImage value="error.gif" /> </f:facet> </rich:message>
16. RichFaces beanValidator Criado a partir da versão 3.2.2 GA, provê suporte a validação usando Hibernate Validator. rich:beanValidator deve ser definido da mesma forma que um validador JSF <h:outputText value="Name:" /> <h:inputText value="#{validationBean.name}" id="name"> <rich:beanValidator summary="Invalid name"/> </h:inputText> <rich:message for="name" /> <a4j:commandButton value="Submit" action="#{validationBean.success}" reRender="progress"/> @NotEmpty @Pattern(regex=".*[^s].*", message="This string contain only spaces") @Length(min=3,max=12) private String name;
18. Exercício 4 Criar uma tabela utilizando o rich:dataTable, inserir paginação, ordenação, filtro....
19. Exercício 5 Criar um template de tela com menu na esqueda e tela no centro Utilizar o rich:panelMenu, rich:panelMenuGroup, rich:panelMenuItem Criar dois grupos com 2 itens cada. Cadastro Usuário Funcionário Relatórios Usuários Funcionários Criar 4 telas diferentes Utilizar o menu para chamar essas telas
20. Exercício 6 Modificar a cadastro JSF para utilizar botões ajax, verificar a diferença. a4j:commandButton
21. Exercício 7 Utilizar o componente de combo sugest, listando todos usuários cadastrado. <rich:comboBox suggestionValues="#{cadastro.users}" directInputSuggestions="true" defaultLabel=“Selecione..." />
23. Exercício 9 (Opcional) Criar uma LOV (List Of Value) de UFs. Construir uma modal para apresentar as UFs, com uma tabela onde terá um link, que ao clicar, retorna a UF selecionada para tela anterior. <h:inputText id="ufInput" value="#{user.uf}" required="true" converter="ufConverter" /> <a4j:commandButton value="..." id="link2" ajaxSingle="true"> <rich:componentControl for="UFs" attachTo="link2" operation="show" event="onclick"/> </a4j:commandButton> <a4j:commandLink reRender="ufInput" immediate="true" ajaxSingle="true" onclick="#{rich:component('UFs')}.hide()" value="#{uf}"> <a4j:actionparam name="retornaUF" value="#{ufx.nome}" assignTo="#{user.uf.nome}"/> </a4j:commandLink>