sexta-feira, 28 de setembro de 2007

JSF + Message.properties

Opa opa opa

aqui vai um resumão para "internacionalizar" sua aplicação JSF....

vamos partir da postagem "Criando uma aplicação JSF simples" onde tinhamos apenas o web.xml configurado e não havíamos criado o faces.xml ainda.

Vamos adicionar a funcionalidade de messages ao nosso JSF.

primeiro crie um arquivo de properties....
vamos dar um nome novo para ele, algo inovador e motivador
"Messages.properties"

Coloque nele o seguinte conteúdo:

label_bacana=SOU UM LABEL BACANA

massa né? salve este arquivo dentro da pasta WEB-INF/classes para ficar bem localizado...
só fazendo um parênteses aqui, se vc desenvolve vários módulos em um sistema vc pode separar os message.properties dentro de pacotes para facilitar sua vida na hora de dar manutenção...
fechando parênteses.


tá, bonito! e agora como fazer este cara ficar disponível nos meus jsps?

SIMPLESSSSSS, crie um faces.xml dentro do WEB-INF e nele aponte para seu arquivo de properties



<?xml version="1.0"?>

<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >

<faces-config>

<application>
<message-bundle>
Messages
</message-bundle>
</application>

</faces-config>



veja que teu arquivo tá nomeado como Messages! nao coloquei o properties....
ahhh tem como configurar locale... mas isso fica pra um outro post ;)

Como eu disse em outro post .... a vida é fácil.... messages tb é fácil :D
só falta configurar o web.xml para carregar este faces.xml

altere o parâmetro javax.faces.CONFIG_FILES da seguinte forma



<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value></param-value>
</context-param>



PRONTOOOO teu sistema de mensagens tá configurado :D

vamos testar para ver se funciona... hmmm esqueci de dizer como usa
uhhuhuuuhuh

vamos criar um index.jsp fora de nosso WEB-INF :)


<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<f:view>
<f:loadBundle basename="Messages" var="msg"/>
<h:outputText value="#{msg.label_bacana}"></h:outputText>
</f:view>


PRONTOOOOOO
agora só acessar seu brinquedinho novo

http://TEU_SERVIDOR:8080/TUA_APLICACAO/app/index.jsp


abraçossss

quinta-feira, 27 de setembro de 2007

JSF + TILES2

Hmmmm mais uma sopa de letrinhas para misturar....
nesta postagem vou apresentar a maneira, mais simples que encontrei, de adicionar a funcionalidade TILES2 à uma aplicação JSF....
Para resumir este post, sugiro que leia meu post sobre a Criação Inicial de uma Aplicação JSF... usaremos ela como ponto de partida

Vamos começar baixando o TILES2 do site
http://tiles.apache.org/download.html

Para este post usarei a versão 2.0.4 do TILES2.

Pois bem, antes de mais nada, quero dizer que para integrar TILES2 + JSF vc NÃO precisa de nenhuma implementação de JSF externa (como MYFACES etc etc etc)....
Mas voltando ao assunto, do arquivo obtido utilizaremos apenas 3 JARs:

tiles-api-2.0.4.jar
tiles-core-2.0.4.jar
tiles-jsp-2.0.4.jar

Coloque-os na pasta lib de sua aplicação, mais ou menos como a imagem....


Estas bilbiotecas contém os TLDs e as classes necessárias para fazer nosso TILES2 funcionar....




Como disse anteriormente, a vida é fácil.... logo TILES2 tb deve ser hahahaha

vamos mexer no nosso web.xml?
Adicione as seguintes linhas ao seu WEB.XML


<!-- TILES PARAMS -->
<servlet>
<servlet-name>tiles</servlet-name>
<servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
<init-param>
<param-name>definitions-config</param-name>
<param-value>
/WEB-INF/tiles.xml
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>Tiles Dispatch Servlet</servlet-name>
<servlet-class>org.apache.tiles.web.util.TilesDispatchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Tiles Dispatch Servlet</servlet-name>
<url-pattern>*.tiles</url-pattern>
</servlet-mapping>

Muito bemmmmmmmm

agora seu tiles está configurado.... veja que estamos usando o arquivo /WEB-INF/tiles.xml como definition file.... entao vamos criar um tiles.xml de teste.... :)

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

<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>
<definition
name="minhaIndex"
template="index.jsp" >
</definition>

<definition
name="minhaIndexTunada"
extends="minhaIndex" >
<put-attribute
name="body"
value="/body.jsp"></put-attribute>
</definition>

</tiles-definitions>

Ok... agora só brincar....
que tal começar pelo index.jsp?

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>


<f:view>

<f:subview id="index_body">
<tiles:insertAttribute name="body"/>
</f:subview>
</f:view>

e que tal criarmos nosso body.jsp?

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<f:subview id="body_jsp_bacana">

<h:outputText value="INDEX TUNADAAAA"></h:outputText>

</f:subview>>

PRONTOOOOOOOOOO

para acessar basta proceder da seguinte maneira

http://SEU_SERVIDOR:8080/NOME_DA_SUA_APLICACAO/app/minhaIndexTunada.tiles


valeuuuuuu

Criando uma aplicação JSF simples...

Buenas a todos que estiverem lendo...

Existem diversos tutoriais pela internet ensinando como criar um projeto usando JSF. Mas tentei reduzir a dor de cabeça e colocar da forma mais simples possível... obs: as partes em itálico não são importantes :) isso vai facilitar sua leitura hahaha
Aqui nesta postagem vou colocar meu passo-a-passo para configurar uma aplicação JSF.

Se eu não me engano JSF só vai funcionar em TOMCAT 5.5 ou superior... ;)

Vamos começar pegando os ingredientes....

Download da RI (Reference Impl) do JSF:
http://java.sun.com/javaee/javaserverfaces/download.html

no meu exemplo peguei a versão 1.1.01 mas já tinha o patch para 1.2.x

Bem, dentro deste arquivo que pegamos da sun apenas 6 arquivos são necessários para uma aplicação JSF básica:

commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
jsf-api.jar
jsf-impl.jar

Bemmmmmmm, vamos colocar estes 6 arquivos dentro da pasta lib de nossa aplicação ;)
(como a imagem a seguir)

Ahhh, como o JSF usa jstl, coloquei a biblioteca jstl-1.1.0.jar no lib.

Pois bem.... a vida é muito simples... jsf não pode ser diferente, né?
Então só vamos configurar nosso querido web.xml para utilizar as tags JSF.


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value></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>/app/*</url-pattern>
</servlet-mapping>

</web-app>




Veja que o parametro javax.faces.CONFIG_FILES não foi fornecido.... logo não serão carregados os Managed-Beans, como esta é uma postagem para uma aplicação inicial em JSF não aprofundei muito o assunto.

pronto, sua app JSF está pronta.... quer testar?

crie o seguinte JSP fora da pasta WEB-INF


<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<f:view>

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

</f:view>

salve como index.jsp e acesse sua aplicação desta maneira

http://SEU_SERVIDOR:8080/NOME_DA_SUA_APLICACAO/app/index.jsp

;)