Sei sulla pagina 1di 13

Java Server Faces 1.2 Publicado por Henrique Lima e arquivado em Java Server Faces.

1 Requisitos Ser necessrio o conhecimento dos seguintes itens para a criarmos nosso primeiro exemplo: 1. Nvel bsico de conhecimento de orientao a objetos utilizando Java. 2. Nvel bsico de conhecimento na criao de aplicaes WEB utilizando Tomcat, de preferncia verso 6.0. 3. Manipulao de bibliotecas jar. (Utilizando IDE ou no). 4. Nvel bsico de conhecimento de HTML e XML. 2 Configurando o ambiente Para rodar aplicaes Java Server Faces 1.2 necessrio um container que implemente a especificao da JSP 2.1. Para este tutorial iremos utilizar o container Tomcat 6.0. Download: http://tomcat.apache.org/download-60.cgi Sero necessrios 8 arquivos jars que devem estar no classpath ou no diretorio WEB-INF/lib de sua aplicao WEB, so eles:

jsf-api.jar e jsf-impl.jar Download: https://javaserverfaces.dev.java.net/download.html commons-beanutils.jar Download: http://commons.apache.org/downloads/download_beanutils.cgi

commons-colletions.jar Download: http://commons.apache.org/downloads/download_collections.cgi

commons-logging.jar Download: http://commons.apache.org/downloads/download_logging.cgi

commons-diggester.jar Download: http://commons.apache.org/downloads/download_digester.cgi

jstl.jar e standard.jar (Standard Taglib) Download: http://jakarta.apache.org/site/downloads/downloads_taglibsstandard.cgi Para que o Java Server Faces funcione adequadamente se faz

necessrio

configurao

do

Faces

Servlet

para

que

este

atenda s requisies das pginas JSF. A Listagem 1 mostra um exemplo de configurao do web.xml. Listagem 1 <?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/webapp_2_5.xsd"> <context-param> <param-name>com.sun.faces.verifyObjects</param-name> <param-value>true</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</paramname> <param-value>client</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>/faces/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>faces/index.jsp</welcome-file> </welcome-file-list> </web-app>

Como pode-se observar foram configurados 3 parmetros de contexto. A utilidade destes ser descrita a seguir:

com.sun.faces.verifyObjects Esta flag configurada como true quando se quer que implementao do Java por Server afetar Faces a verifique se os no objetos incio da da aplicao execuo (conversores, etc) foram criados adequadamente. Seu valor padro false, performance da aplicao.

com.sun.faces.validateXml Esta flag configurada como true quando se quer que a implementao do Java Server Faces verifique a integridade do arquivo faces-config.xml em funo do seu DTD correspondente. Seu valor padro false.

javax.faces.STATE_SAVING_METHOD Esta flag usada para configurar em que lado da aplicao o estado da view deve ser salvo. Existem 2 valores possveis: server e client. Quando configurado como client o estado de toda camada de viso ser renderizado em um campo hidden na pgina jsp. Seu valor padro server.

3 Criando o Bean Gerenciado (Managed Bean ou Backing Bean) O Bean Gerenciado a camada de negcios das aplicaes JSF. Sua principal com camada pacote funo um de atributo negcio compartilhar e da o seus atributos ao de e e/ou viso. Crie mtodos evento no com as pginas JSP. Cada campo de um formulrio da pgina JSP integrado cada camada arquivo com um mtodo do Bean Gerenciado, resultando numa tima separao da br.com.jsftutorial HelloWorldBean.java conforme

demonstra a listagem 2. Listagem 2 package br.com.jsftutorial;public class HelloWorldBean {private String nome;

public HelloWorldBean() { } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String acao() { return "sucesso"; } } Todo Bean Gerenciado deve possuir o construtor default (sem nenhum argumento), do contrrio ser lanado uma java.lang.InstantiationException. Todo atributo integrado pgina JSP dever possuir seus mtodos setters e getters mesmo que seu modificador de visibilidade seja public, como por exemplo o atributo nome do HelloWorldBean. 4 Configurando o Bean Gerenciado no faces-config.xml O arquivo faces-config.xml o arquivo de configurao do Java Server Faces.

Este arquivo deve estar na pasta WEB-INF/ de sua aplicao e contm entre outras configuraes as declaraes dos Beans Gerenciados que devero ser instanciados configurao de um Bean Gerenciado. Listagem 3 <?xml version='1.0' encoding='UTF-8'?> <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/webfacesconfig_1_2.xsd"> <managed-bean> <managed-bean-name>hwBean</managed-bean-name> <managed-bean-class>br.com.jsftutorial.HelloWorldBean</managed-beanclass> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config> Entre as tags <faces-config> e </faces-config> se localizam toda a configurao da aplicao JSF. A configurao necessria para um Bean Gerenciado bem intuitiva, abaixo segue a descrio das tags utilizadas: pela implementao do JSF. Na listagem 3 apresentado um modelo tpico de

managed-bean Toda a configurao de um, e apenas um, Bean Gerenciado deve estar contido nesta tag.

managed-bean-name Nome utilizado para referenciar o Bean Gerenciado nas pginas JSP. managed-bean-class O caminho completo para a classe que representa este Bean Gerenciado.

Managed-bean-scope Indica de qual escopo (scope) este Bean Gerenciado ser resgatado. Existem 4 tipos possveis.
o

none S poder ser utilizado como propriedade de um outro managed bean. request Estar disponvel atravs do request, ou seja, seu tempo de vida acaba aps a submisso do formulrio. session Estar disponvel atravs da session, ou seja, seu tempo de vida o mesmo que o tempo de vida da session configurada no web.xml. application Estar disponvel atravs do objeto application, ou seja, seu tempo de vida o mesmo da aplicao.

Existem

outras

tags

que

adicionam

funcionalidades

ao

Bean

Gerenciado, aconselho a utilizar o Java (TM) EE 5 tutorial captulo 5 item Backing Beans disponvel na url: http://java.sun.com/javaee/5/docs/tutorial/doc/. 5 Criando o index.jsp Crie a pgina index.jsp na pasta de arquivos WEB (mesma altura que WEB-INF/ e META-INF/) de sua aplicao com o contedo da Listagem 4. Listagem 4

<%@page contentType="text/html"%><%@page pageEncoding="UTF-8"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Java Server Faces Tutorial</title> </head> <body> <f:view>

<h:form id=formulario>

<b>Nome:</b>

<h:inputText id=nome value=#{hwBean.nome} required=true requiredMessage=O campo nome deve ser preenchido!/>

<h:commandButton value=GO action=#{hwBean.acao} /><br>

<h:message for=nome errorStyle=color:red/>

</h:form>

</f:view>

</body>

</html> Nas linhas 3 e 4 temos as declaraes das taglibs core e html do Java Server Faces que sero utilizadas para criarmos os componentes na pgina JSP. A tag <f:view> deve conter os componentes JSF. A tag <h:form> anlogo a tag <form> do html. Atravs da tag <h:inputText> ser criado um componente input do html e do tipo text (<input type=text>). O atributo value permite integrar o valor deste componente a uma propriedade do Managed Bean, ou seja, quando o formulrio for submetido o valor deste componente ser copiado para a propriedade nome do Managed Bean configurado no faces-config.xml cujo o nome foi configurado como hwBean (<managedbeanname>hwBean</managed-bean-name>). O atributo required determina que o formulrio no poder ser submetido caso este campo no seja preenchido. O atributo requiredMessage determina a mensagem de erro que ser apresentada caso, ao submeter o formulrio, este componente no seja preenchido. Atravs da tag <h:commandButton> ser criado um componente button do html (<input type=button>). O atributo action determina o mtodo do Managed Bean que ser executado quando este boto for pressionado.

A tag <h:message> um componente utilizado para apresentar as mensagens ao usurio. O atributo for deve ser preenchido com o id do componente que desejamos que esta mensagem seja integrada, ou seja, sero apresentadas as mensagens referentes apenas ao campo cujo o id nome do formulrio. O atributo errorStyle permite aplicarmos um estilo CSS ao componente quando a mensagem for de erro. 6 Criando o resultado.jsp Crie a pgina resultado.jsp na pasta de arquivos WEB (mesma altura que WEB-INF/ e META-INF/) de sua aplicao com o contedo da Listagem 5. Listagem 5 <%@page contentType="text/html"%><%@page pageEncoding="UTF-8"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Java Server Faces Tutorial</title> </head> <body>

<f:view> Ola, <h:outputText value="#{hwBean.nome}" />! </f:view> </body> </html> 7 Criando o fluxo do aplicativo Para determinarmos o fluxo do aplicativo adicionamos uma navigation rule ao faces-config.xml. Ao executarmos o mtodo acao() do Managed Bean, a String sucesso ser retornada e pela navigation rule determinamos que a pgina resultado.jsp dever ser apresentada. A listagem 6 demonstra o contedo do faces-config.xml. Listagem 6 <?xml version='1.0' encoding='UTF-8'?> <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/webfacesconfig_1_2.xsd"> <managed-bean> <managed-bean-name>hwBean</managed-bean-name> <managed-bean-class>br.com.jsftutorial.HelloWorldBean</managed-beanclass> <managed-bean-scope>none</managed-bean-scope>

</managed-bean> <navigation-rule> <navigation-case> <from-outcome>sucesso</from-outcome> <to-view-id>/resultado.jsp</to-view-id> </navigation-case> </navigation-rule> </faces-config> Aps a submisso do formulrio, a propriedade nome do Managed Bean ter o valor digitado no componente <h:inputText> do index.jsp, ento a pgina resultado.jsp ser apresentada (conforme configurado no facesconfig.xml). Para testar a aplicao inicie o tomcat e acesse o endereo abaixo: http://localhost:8080/HelloJSF/faces/index.jsp 8 Prximos Passos Existem ainda diversos recursos e componentes do JSF, aconselho a leitura da referncia da API, acessando a url http://java.sun.com/javaee/javaserverfaces/reference/api/index.html. Alm disso, existem outras timas implementaes que disponibilizam novos componentes e recursos como a utilizao de Ajax e DOM na renderizao das pginas. Recomendo o estudo do IceFaces e do Ajax4Jsf, ambos open source. 9 Concluso

Apesar de muita discusso sobre a qualidade dos diversos frameworks open source do mercado, Java Server Faces se apresenta como uma tima opo no desenvolvimento de interfaces para aplicaes JEE. Com a incluso deste framework na JEE 5, existe uma grande tendncia ao crescimento de sua utilizao o que torna indispensvel o conhecimento de seus recursos e de suas diversas implementaes. Neste tutorial foi abordado o conceito bsico do funcionamento deste framework e em uma nova oportunidade voltarei a escrever sobre esta tecnologia. At l.

Potrebbero piacerti anche