JSTL – Trabalhando com internacionalização

by Luiz Paulo | setembro 26, 2008 | 5 Comments »

A internacionalização é um diferencial para qualquer projeto, independente da linguagem que você utilize. É importante que você saiba alguma técnica para essa funcionalidade.
Desenvolver sistemas web com JAVA se torna bem simples se bem feito, mais simples ainda quando utilizamos bibliotecas como o JSTL. Vamos ver como é simples criar um sistema web com internacionalização em JAVA.
Nesse tutorial veremos como trabalhar com internacionalização em sistemas web utilizando JSP e a biblioteca JSTL.

Vamos direto para a prática!
Utilizaremos o Eclipse como API para desenvolvimento JAVA, partindo de um projeto web já criado.

Primeiro passo

Antes de começar a escrever código, você precisa baixar a biblioteca JSTL. Utilizaremos os pacotes standard.jar e jstl.jar.

Copie as duas bibliotecas para o diretório /WebContent/WEB-INF/lib/ ou para o diretório de libs do JAKARTA, para que sejam enxergadas pelo seu projeto.

Segundo passo

Vamos criar os arquivos de tokens.
Devemos definir o pacote para os arquivos. No nosso caso vamos colocar em:
com.lppjunior.blog.controller.messages

Criaremos 2 arquivos de tokens dentro desse pacote:

messages_pt.properties
	My_first_test=Meu primeiro teste
	Hello_World=<h1>Olá Mundo</h1>
messages_en.properties
	My_first_test=My first test
	Hello_World=<h1>Hello World</h1>

O arquivo de token é formado por TOKEN_NAME=VALUE sempre!
Não utilize espaço, acento ou qualquer caractere no TOKEN_NAME, e não utilize quebra de linha no VALUE, quando precisar desse tipo de recurso, utilize \n ou a tag br no caso de HTML.

Perceba no exemplo acima que coloquei tags HTML no Hello_World para ilustrar a possibilidade, mas o ideal é utilizarmos as tags no próprio código HTML.

Terceiro passo

Vamos criar um HTML bem simples já com as tags e as chamadas para as tokens.

Veja o exemplo:

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:setLocale value="pt" />
<fmt:setBundle basename="com.lppjunior.blog.controller.messages.messages" />
<html>
	<head>
		<title><fmt:message key="Internacionalization_test" /></title>
	</head>
	<body>
		<fmt:message key="My_first_test" />
		<fmt:message key="Hello_World" />
		<hr />
		<fmt:message key="Test_undefined_token" />
	</body>
</html>

Definições:
- Primeiro importamos a tagLib "fmt" para utilização do recurso de internacionalização;
- Configuramos a linguagem que desejamos utilizar (nesse caso "pt" Português);
- Configuramos a localização dos arquivos de tokens (repare quem além do pacote, precisamos colocar o início do nome do arquivo "messages" - O JSTL concatena [bundle + "_" + locale] para achar o arquivo);
- Utilizamos a tag "fmt:message" para retornar o conteúdo das tokens.

Resultado final:

<html>
	<head>
		<title>Meu primeiro teste</title>
	</head>
	<body>
		<h1>Olá Mundo</h1>
		<hr />
		???Test_undefined_token???
	</body>
</html>

Repare que deu um erro na token "???Test_undefined_token??? ". Isso aconteceu, pois a token "Test_undefined_token" não foi definida em nosso arquivo "messages_pt.properties", para resolver o problema basta defini-la.

Baixe aqui o projeto

É importante dizer que essa é uma das formas mais simples de criar a internacionalização. Em um projeto real, você pode isolar e definir as configurações dinamicamente, para que sejam reaproveitadas por todo o projeto.

Existe uma outra forma para configurar o JSTL para internacionalização, utilizando o web.xml, mas não achei necessário citar nesse tutorial.

Categorias: Desenvolvimento web, Java, Linguagens
Tags: , , , , ,

Java – Desenvolvimento web com JSTL

by Luiz Paulo | setembro 16, 2008 | 3 Comments »

JSTL é uma biblioteca utilizada para substituir código JAVA nos JSPs. Todo o código JAVA é substituido por TAGs específicas equivalentes a cada funcionalidade.
Uma poderosa solução da JSTL são as TagLibs onde podemos criar nossas próprias tags com funcionalidades personalizadas.

Veja um exemplo de página JSTL:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<jsp:useBean id="agora" class="java.util.Date" />
<html>
	<body bgcolor="#FFFFFF">
		<p><strong>Versão Curta: </strong><fmt:formatDate value="${agora}" /></p>
		<p><strong>Versão Longa: </strong><fmt:formatDate value="${agora}" dateStyle="full" /></p>
	</body>
</html>

O resultado desse código seria:


Versão Curta: 15/09/2008

Versão Longa: Segunda-feira, 15 de Setembro de 2008

A propriedade prefix define o prefixo "ftm" que interpretará a biblioteca de formatação e interação do JSTL.

Bibliotecas padrão

O JSTL fornece algumas bibliotecas padrão com foco bem específico, veja as bibliotecas:

Biblioteca JSTL Tipos de uso
Biblioteca: Core
Prefixo: c
URI: http://java.sun.com/jstl/core />
Exemplo de tag: <c:forEach>
- Acessar e modificar dados em memória
- Comandos condicionais
- Loop
Biblioteca: Processamento de XML
Prefixo: x
URI: http://java.sun.com/jstl/xml />
Exemplo de tag: <x:forEach>
- Parsing (leitura) de documentos
- Impressão de partes de documentos XML
- Tomada de decisão baseada no conteúdo de um documento XML
Biblioteca: Internacionalização e formatação
Prefixo: fmt
URI: http://java.sun.com/jstl/fmt />
Exemplo de tag: <fmt:formatDate>
- Leitura e impressão de números
- Leitura e impressão de datas
- Ajuda a sua aplicação funcionar em mais de um idioma
Biblioteca: Acesso a banco de dados via SQL
Prefixo: sql
URI: http://java.sun.com/jstl/sql />
Exemplo de tag: <sql:query>
- Leitura e escrita em banco de dados

Download

Para utilizar o JSTL você precisa fazer o download dao biblioteca.
Clique aqui para baixar

Categorias: Desenvolvimento web, Java
Tags: , , , , ,


 

Sobre

Foto Luiz Paulo

Sou desenvolvedor web desde 2000, atuei em grandes projetos web2.0. Atualmente trabalho na Automatos junto equipe de site desenvolvendo projetos web2.0 e utilizando como server-side a linguagem java.

Para saber mais sobre mim, acesse Meus Links ›


Valid XHTML 1.0 Strict Valid CSS!

Luiz Paulo | tecnologia web