Java JSTL. Rodrigo C. de Azevedo



Documentos relacionados
Java para WEB JSTL. JavaServer Pages Standard Tag Library

Programação para Internet II

JSTL: facilitando o JSP. Fernando Boaglio

Linguagem de Expressão, JSTL e DisplayTag. Fornece tags para encapsular funcionalidades complexas para utilização em JSPs

JSTL: Uma forma padrão de desenvolver página WEB dinâmica Plácido Antonio de Souza Neto

Java II. Sérgio Luiz Ruivace Cerqueira

J550 Tag Libraries e JSTL

JSP Standard Tag Library (JSTL)

JSP Standard Tag Library (JSTL)

Servlets & JSP. Prof. Ramon Chiara

AULA 12 JSTL. Prof. André Luis Schwerz.

Desenvolvimento Web TCC Turma A-1

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

Associação Carioca de Ensino Superior Centro Universitário Carioca

JSP - ORIENTADO A OBJETOS

Desenvolvimento de aplicações Web. Java Server Pages

UNIDADE III JAVA SERVER PAGES

Aplicações de Linguagem de Programação Orientada a Objeto

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

Sistemas para internet e software livre

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Tecnologias Web. Java Enterprise Edition

Aula 03 - Projeto Java Web

Capítulo 1 - Preparando o Ambiente Capítulo 2 Xhtml - 35 Capítulo 3 - Aplicação Web - 87

Scriptlets e Formulários

Relatório referente a compreensão da programação JSP. Realizado do dia de 22 abril de 2010 a 03 de maio de 2010.

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Introdução ao PHP. Prof. Késsia Marchi

Java para Desenvolvimento Web

Roteiro do Programa e Entrada/Saída

3 Classes e instanciação de objectos (em Java)

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

Manual de Programação Basic. Manual de auxílio para personalização de mensagens com o uso de programação BASIC

Aula de JavaScript 05/03/10

Java II. Sérgio Luiz Ruivace Cerqueira

JavaServer Pages. Também são conhecidas pela sigla correspondente (JSP). Representam mais uma tecnologia da plataforma JEE.

2 echo "PHP e outros.";

FBV - Linguagem de Programação II. Um pouco sobre Java

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Java Beans e Servlets

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Professora Martha Spalenza Professora de Informática da Faetec

Informática I. Aula 6. Aula 6-12/09/2007 1

Programando em PHP. Conceitos Básicos

Java para WEB. Servlets

Java para Desenvolvimento Web

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Componentes da linguagem C++

Engenharia de Software III

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Curso de Aprendizado Industrial Desenvolvedor WEB

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha

JSP: JAVA SERVER PAGES

JAVA Programmer - Objetivo do Curso. Pré-requisito do Curso. Conteúdo Programático do Curso

CURSO DE PROGRAMAÇÃO EM JAVA

Linguagem de Programação III Aula 2 Revisão Parte II

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL

Objetos Implícitos. Conceito. Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP.

Validando dados de páginas WEB

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Programação Web Aula 12 - Java Web Software

AULA 12 CLASSES DA API JAVA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes alba.lopes@ifrn.edu.br

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

JSP: JAVA SERVER PAGES

O que é o JavaScript?

JSP - JavaServer Pages

Introdução aos cálculos de datas

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

Internet e Programação Web

EMENTA DO CURSO. Tópicos:

MANUAL DE UTILIZAÇÃO. Instalação do MV Portaria

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

Sintaxe Básica de Java Parte 1

Parte I. Demoiselle Mail


Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

Estudo Dirigido - Parte 1

JSP (Java Server Pages)

Tecnologias para Web Design

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

HTML 5 + CSS APRESENTANDO O CSS ESTILOS LOCAIS

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa

Acessando um Banco de Dados

Mais sobre uso de formulários Site sem Ajax

Começando com Ruby on

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Transcrição:

Java JSTL Rodrigo C. de Azevedo OMG Certified UML Professional Fundamental OMG Certified UML Professional Intermediate CompTIA Project+ Sun Certified Associate for Java Platform Sun Certified Programmer Java 1.4 Sun Certified Programmer Java 5.0 Sun Certified Web Component Developer Sun Certified Business Component Developer J2EE 1.3 Sun Certified Enterprise Architect [SCEA, Part I] 2 / 97

Roteiro Assuntos Como instalar e utilizar JSTL Definição Biblioteca Core Biblioteca I18N Biblioteca Functions Referências 3 / 97 Introdução JSTL1.1 na JEE 1.4 Para utilizar o JSTL 1.1 deve-se colocar na biblioteca do projeto web os arquivos jstl.jar e standard.jar. Para fazer o download desta versão, acesse: http://jakarta.apache.org/site/downloads/downloads_taglibs -standard.cgi 4 / 97

Introdução JSTL1.1 na JEE 1.4 Em cada página JSP é necessário inserir a declaração da taglib com o grupo de tags desejada. JSTL core: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> JSTL fmt: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> JSTL xml: <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> JSTL sql:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> JSTL functions: <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 5 / 97 Introdução JSTL1.2 na JEE 1.5 A biblioteca do JSTL 1.2, diferente da versão JEE 1.4, possui somente o arquivo jstl.jar. Para fazer download desta versão, acesse: https://maven-repository.dev.java.net/repository/jstl/jars/ 6 / 97

Introdução JSTL1.2 na JEE 1.5 Em cada página JSP é necessário inserir a declaração da taglib com o grupo de tags desejada. JSTL core: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> JSTL fmt: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> JSTL xml: <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> JSTL sql: <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> JSTL functions: <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 7 / 97 Introdução Java Server Pages Standard Tag Library (JSTL) É o nome de um conjunto de tags que visa prover suporte para iterações, condicionais, processamento XML, internacionalização, operações em String e acesso à dados usando SQL. A especificação JSTL (JSR-52) foi desenvolvida pela Java Community Process (http://www.jcp.org). 8 / 97

Introdução É composta pelas seguintes bibliotecas: Core I18N Functions Sql Xml 9 / 97 Biblioteca Core Tags da Biblioteca Core Para esta biblioteca é recomendável utilizar o prefixo c. * Aplicado a todas as tags do grupo Gerenciamento de URL Operações com variáveis Fluxo de controle Iterações Gerenciamento de URL Miscelânea set remove choose when otherwise if foreach fortokens import param* redirect url catch out 10 / 95

c:set - Operações com variáveis c:set Permite inserir atributo em qualquer escopo. Nota var - Define o nome da variável. value É o valor que a variável irá receber. scope Permite definir o escopo onde o resultado da condição será armazenado na variável. O default se este atributo não for informado é Page. Os escopos possíveis são Page, Request, Session e Application. 11 / 97 c:set - Operações com variáveis Exemplo de uso <c:set var= resultado value= ${valor} /> ou <c:set var= resultado >${valor} </c:set> <c:set var= resultado scope= session >${valor}</c:set> 12 / 97

c:set - Operações com variáveis c:set Permite também manipular JavaBeans. target Pode ser qualquer JavaBean ou java.util.map. Este atributo deve ser utilizado em conjunto com o atributo property. property Define o atributo que será alterado. 13 / 97 c:set - Operações com variáveis Exemplo de uso <c:set target="${sessionscope}" property="maxinactiveinterval">60</c:set> ${sessionscope.maxinactiveinterval} 14 / 97

c:set - Operações com variáveis Notas Logicamente não é possível utilizar os atributos var e target em conjunto. Se o value informado for null, o atributo nomeado será removido. Se a variável definida pelo atributo var não existir, o mesmo será criado. Se a variável já existe, apenas será alterada. Se o atributo target for traduzido como null, será lançada uma exceção. Se o target após a tradução não for possível de ser utilizado como um Java Bean, será lançada uma exceção. Um erro comum é colocar uma String que representa o nome da variável do Bean no atributo target. Lembre-se, o target tem que representar uma referência de um objeto Java e nunca um literal. 15 / 97 c:remove - Operações com variáveis c:remove É usado para remover um atributo de algum dos escopos. Atributo Nota var (obrigatório) - Define o nome da variável que será removida. scope Permite definir o escopo de onde a variável será removida. Se o escopo não for definido, serão removidos todos os atributos com o nome passado no atributo var de todos os escopos(page, Request, Session e Application). Apresenta o mesmo comportamento do método removeattribute do PageContext. 16 / 97

c:if - Fluxo de controle c:if Executará o corpo se a condição for verdadeira. test - Representa uma condição boleana que pode ser fornecida através de scriptlet ou EL. 17 / 97 c:if - Fluxo de controle c:if Quando a tag não possui corpo, é possível utilizar outros dois atributos que permitem armazenar o resultado. var Permite armazenar o resultado da condição test. scope Permite definir o escopo onde o resultado da condição será armazenado na variável. O default se este atributo não for informado é Page. 18 / 97

c:if - Fluxo de controle Exemplo de uso <c:if test= ${valor gt 3} > <p>valor maior que 3</p> </c:if> <c:if test= ${valor > 3} var= resultado /> <c:if test= ${resultado} >O if anterior foi verdadeiro</c:if> <c:if test= ${minhastags:verificar(100)} > Entrei aqui... </c:if> 19 / 97 c:choose - Fluxo de controle c:choose É como se fosse um bloco de if / else if / else when - Possui um atributo obrigatório denominado test. otherwise É opcional, mas se for incluído somente pode haver 1. Não tem nenhum atributo. Somente é executado se todos os testes presentes nas tags when falhar. Tem que ser a última opção. 20 / 97

Exemplo de uso c:choose - Fluxo de controle <c:choose> <c:when test= ${valor lt 2 and valor ge 0} > Valor é igual 1. </c:when> <c:when test= ${valor lt 3 && valor ge 1} > Valor é igual 2. </c:when> <c:otherwise> Valor não é 1 nem 2. </c:otherwise> </c:choose> 21 / 97 c:foreach - iterações c:foreach Permite iteragir em um java.lang.array, java.util.collection, java.util.iterator ou java.util.enumeration. var Nomeia a variável que recebe o item originado pela iteração. items Recebe através de um scriplet ou EL um objeto que pode ser dos tipos definidos acima. 22 / 97

c:foreach - iterações Exemplo de uso <c:foreach items= ${algumalista} var= item > <p>${item}</p> </c:foreach> 23 / 97 c:foreach - iterações Como percorrer um Map <c:foreach items= ${paramvalues} var= keyentry > <p>${keyentry.key} = ${keyentry.value[0]}</p> </c:foreach> Nota No exemplo acima foi utilizado o objeto implícito paramvalues que retorna um Map com todos os parâmetros, onde a chave (key) é o nome do parâmetro e o valor é um array de objetos String. Para obter o primeiro item do Array de Strings, que representa o valor, deve-se utilizar entre colchetes o índice 0. 24 / 97

c:foreach - iterações atributo varstatus Representa uma instância da classe de LoopTagStatus. Possui inúmeros métodos que permite obter informações sobre a iteração. Por exemplo, é possível verificar se o laço se encontra na última iteração, obter o objeto corrente e etc. 25 / 97 c:foreach - iterações atributo varstatus Exemplo de uso <c:foreach var= carro items= ${carros} varstatus= info > <p>${info.count}</p> <!- - Contador de iterações -- > </c:foreach> 26 / 97

c:foreach - iterações c:foreach aninhados Exemplo de uso <c:foreach items="${paramvalues}" var="keyentry"> <p>[${keyentry.key} = <c:foreach items="${keyentry.value}" var="value" varstatus="status"> [ ${value} ] <c:if test= ${not status.last}">, </c:if> </c:foreach> ]</p> </c:foreach> 27 / 97 c:foreach - iterações c:foreach begin - Define um valor inicial na iteração. end - Define um valor final ou valor máximo na iteração. step - Permite definir o valor do incremento em cada iteração. 28 / 97

c:foreach - iterações Exemplo de uso <c:set var= contador value= 0 /> <c:foreach begin= 1 end= 40 step= 2 > <c:set var= contador value= ${contador+1} /> O valor do contador agora é ${contador} <br/> </c:foreach> 29 / 97 c:fortokens - iterações c:fortokens É uma especialização da tag <c:foreach>. fortokens x foreach O atributo items somente aceita String como valor. Existe um atributo adicional denominado delims que permite especificar o delimitador que será utilizado. 30 / 97

c:fortokens - iterações Exemplo de uso <c:set var="diasdasemana" value="domingo,segunda,terça,quarta,quinta,sexta,sábado"/> Dias da Semana<br/> <ul> <c:fortokens items="${diasdasemana}" delims="," var="dia"> <li>${dia}</li> </c:fortokens> </ul> 31 / 97 c:out - Miscelânea c:out É utilizado para escrever no output da página value (obrigatório) Informa o valor que deverá ser escrito na página. Pode ser um scriplet ou EL. default É acionado quando o value é null. Se este atributo não for fornecido, o null será exibido como uma String vazia. escapexml Converte os caracteres problemáticos para versões XML aceitáveis. Este atributo pode aceitar apenas os valores true e false. O padrão deste atributo é ativado (true). 32 / 97

c:out - Miscelânea O atributo escapexml da tag c:out Caracteres problemáticos < < > > & (aspas simples) Convertidos para & &#039; (aspas duplas) " 33 / 95 c:out - Miscelânea Exemplo de uso <c:out value= ${estado.sigla} default= não informado /> <c:out value= ${estado.sigla} >não informado</c:out> <c:out value= ${estado.nome} /> <c:set var= texto value= <strong>ola Mundo em Negrito</strong> /> <c:out value= ${texto} escapexml= true /> <c:out value= ${texto} escapexml= false /> 34 / 97

c:catch - Miscelânea c:catch Permite capturar um erro sem propagá-lo. É possível capturar qualquer java.lang.throwable e calá-la. var Atributo opcional que recebe a exceção, para posterior uso. 35 / 97 c:catch - Miscelânea Exemplo de uso <c:catch var= error > <% int i=0; i = 3/i; %> </c:catch> ${error.message} 36 / 97

c:import - Gerenciamento de URL c:import É parecido com <jsp:include>, pois realiza a inclusão em tempo de execução. Pode utilizar recursos de outro contexto. O resultado da importação não precisa ser exibido, pode ser armazenado para ser usado posteriormente. 37 / 97 c:import - Gerenciamento de URL c:import url Atributo pode ser relativo ou absoluto. Uma url é considerada relativa se não apresenta /. Uma url é absoluta se informa /. Apesar de absoluta, lembre-se que é relativa ao contexto. 38 / 97

c:import - Gerenciamento de URL c:import context Atributo que permite informar o acesso a outro contexto. O contexto informado precisa residir ou ser conhecido no mesmo container e ambos, url e context, precisam começar com /. var O conteúdo importado será colocado no objeto declarado na variável. scope Informa o escopo para a variável var. Se este atributo não for fornecido, será utilizado o Page. varreader (alternativa para o var) Atribui a página importada em um objeto java.io.reader. charencoding Define o tipo de caracter que está sendo utilizado no arquivo importado. O default é ISO-8859-1. 39 / 97 c:url - Gerenciamento de URL c:url Permite montar corretamente uma url para ser utilizada como link. Quando url-rewrite estiver em uso, esta funcionalidade encapsulará o ID da sessão na URL (análogo ao método encodeurl() do Response). var Nomeia uma variável para utilizar a url. context Nome do contexto utilizado. scope Define o escopo onde será atribuído a variável. value Define a URL (pode ser relativa ou absoluta). 40 / 97

c:url - Gerenciamento de URL Exemplo de uso <c:url value= /urlpage.jsp context= /certificacao var= link /> <a href= ${link} >Este link foi construído</a> <a href= <c:url value= /urlpage.jsp context= /certificacao />Este link também foi construído</a> 41 / 97 c:redirect - Gerenciamento de URL c:redirect Redireciona para uma página específica. Internamente utiliza o HttpServletResponse.sendRedirect(). url (Obrigatório) Define a url. Pode ser absoluta (relativa ao contexto, com / ), relativa (sem / ), completa (incluindo protocolo, hostname e porta). context Nome do contexto desejado. Exemplo de uso <c:redirect url= /redirecionada.jsp /> 42 / 97

c:param - Gerenciamento de URL c:param Pode ser utilizado no corpo das tags c:import, c:url e c:redirect. Permite realizar uma passagem de parâmetros. Esta tag faz o encoding necessário para os valores passados. name - Fornece o nome do parâmetro value - Fornece o valor do parâmetro 43 / 97 c:redirect - Gerenciamento de URL Exemplo de uso <c:url value= /urlteste.jsp var= link > <c:param name= nome value= Rodrigo /> <c:param name= cargo value= Analista /> </c:url> <a href= ${link} >Ver url teste</a> 44 / 97

Biblioteca I18N Tags da Biblioteca I18N Para esta biblioteca é recomendável utilizar o prefixo fmt. Fornecendo Locale Fornecendo mensagens Formatando Date e Number setlocale requestencoding bundle message param setbundle formatnumber formatdate parsedate parsenumber settimezone timezone 45 / 95 Obter o Locale nas aplicações web O locale é obtido através do header http accept-language. Exemplo de valor: pt-br,en-us;q=0.8,pt;q=0.5,en;q=0.3 Obter o locale - I18N A interface HttpServletRequest possui métodos que nos permite obter informações sobre este header. getlocale(): java.util.locale Retornar o objeto Locale que representa a preferência do usuário final. getlocales():enumeration. Obtém todos os idiomas aceitos pelo usuário final. Nota Se o cliente não enviar o header accept-language, será retornado pelo método getlocale() ou getlocales(), o objeto Locale padrão do servidor. 46 / 97

Config - I18N Classe Config A classe javax.servlet.jsp.jstl.core.config é utilizada para controlar as configurações de internacionalização e acesso a dados da JSTL programaticamente. Possui 6 constantes e métodos estáticos que nos permite interferir no comportamento de várias tags das bibliotecas I18N e SQL. 47 / 97 Constante FMT_FALLBACK_LOCALE - I18N Config.FMT_FALLBACK_LOCALE = javax.servlet.jsp.jstl.fmt.fallbacklocale Valores aceitos para esta chave String ou java.util.locale Exemplo: pt_br, Locale.US Pode ser fornecida por Parâmetro no contexto ou programaticamente. 48 / 97

Constante FMT_FALLBACK_LOCALE - I18N Config.FMT_FALLBACK_LOCALE = javax.servlet.jsp.jstl.fmt.fallbacklocale Tags influenciadas <fmt:bundle>, <fmt:setbundle>, <fmt:message>, <fmt:formatnumber>, <fmt:parsenumber>, <fmt:formatdate> e <fmt:parsedate> 49 / 97 FMT_FALLBACK_LOCALE - I18N Definição O valor fornecido pela configuração do fallback locale provê uma configuração padrão para o locale. É utilizado apenas quando o objeto locale não for encontrado (ou seja, não for passado pelo header acceptlanguage). 50 / 97

FMT_FALLBACK_LOCALE - I18N Definição Quando utilizamos uma String para configurar este valor, este literal deve conter o valor em minúsculo que corresponde ao código da linguagem de acordo com a ISO-639. Opcionalmente pode conter em maiúsculo o nome do país de acordo com a ISO-3166, separado por hífem ou underscore. Exemplo pt_br, en_us 51 / 97 FMT_FALLBACK_LOCALE - I18N Exemplo de uso <web-app> <context-param> <param-name> javax.servlet.jsp.jstl.fmt.fallbacklocale </param-name> <param-value>pt_br</param-value> </context-param> </web-app> Ou (dentro de um Servlet) Locale locale = new Locale( pt, BR ); HttpSession session = request.getsession(); Config.set(session, Config.FMT_FALLBACK_LOCALE, locale); 52 / 97

FMT_LOCALE - I18N Constante Config.FMT_LOCALE = javax.servlet.jsp.jstl.fmt.locale Valores aceitos para esta chave String ou java.util.locale Exemplo: pt_br, Locale.US Pode ser fornecida por <fmt:setlocale>, parâmetro no contexto ou programaticamente. Tags influenciadas <fmt:bundle>, <fmt:setbundle>, <fmt:message>, <fmt:formatnumber>, <fmt:parsenumber>, <fmt:formatdate> e <fmt:parsedate> 53 / 97 FMT_LOCALE - I18N Definição Se for alterada esta chave, desabilitará a procura do locale baseado na preferência do usuário (através do header HTTP accept-language). Segue as mesmas regras do Config.FMT_FALLBACK_LOCALE. 54 / 97

FMT_LOCALIZATION_CONTEXT - I18N Constante Config.FMT_LOCALIZATION_CONTEXT = javax.servlet.jsp.jstl.fmt.localizationcontext Valores aceitos para esta chave String ou javax.servlet.jsp.jstl.fmt.localizationcontext Pode ser fornecida por <fmt:setbundle>, parâmetro do contexto ou programaticamente. Tags influenciadas <fmt:message>, <fmt:formatnumber>, <fmt:parsenumber>, <fmt:formatdate> e <fmt:parsedate> 55 / 97 FMT_LOCALIZATION_CONTEXT - I18N Definição O valor pode ser um literal (String) contendo o nome do resource bundle. Neste momento, JSTL localiza o locale para o bundle. Ou utilizar a tag <fmt:setbundle> que fornece o bundle para uma instância da classe LocalizationContext. Nota LocalizationContext contém informações (referências) sobre o resource bundle e o locale. 56 / 97

FMT_LOCALIZATION_CONTEXT - I18N Exemplo de uso <web-app> <context-param> <param-name> javax.servlet.jsp.jstl.fmt.localizationcontext </param-name> <param-value>messages</param-value> </context-param> </web-app> Nota Este arquivo de mensagens deve estar no classpath da sua aplicação web e deve possuir a extensão.properties. 57 / 97 FMT_LOCALIZATION_CONTEXT - I18N Exemplo do arquivo messages.properties label.saudacao = Bom dia erro.campo.obrigado = Campo é obrigatório! Exemplo do arquivo messages_en.properties label.saudacao = Good morning erro.campo.obrigado = Field is required! 58 / 97

FMT_LOCALIZATION_CONTEXT - I18N A tag fmt:message sempre procura o arquivo de mensagens mais adequado para o locale associado ao usuário (enviado pelo header accept-language) Se o locale associado usuário for en_us, a tag fmt:message irá tentar buscar as mensagens respectivamente nos seguintes arquivos: messages_en_us.properties messages_en.properties messages.properties O primeiro a ser encontrado será utilizado. 59 / 97 FMT_LOCALIZATION_CONTEXT - I18N Nota É considerado boa prática ter um arquivo de propriedades com a língua padrão do sistema e um arquivo específico para cada língua adicional. 60 / 97

FMT_TIME_ZONE - I18N Constante Config.FMT_TIME_ZONE = javax.servlet.jsp.jstl.fmt.timezone Valores aceitos para esta chave String ou java.util.timezone Exemplo: GMT-4, America/Los_Angeles Pode ser fornecida por <fmt:settimezone>, parâmetro no contexto ou programaticamente. Tags influenciadas <fmt:formatdate> e <fmt:parsedate> 61 / 97 FMT_TIME_ZONE - I18N Definição A configuração do time zone provê um time zone padrão para as tags de formatação do JSTL e os conversores de datas. Valores literais (String) para o time zone precisam ser de um tipo definido na classe java.util.timezone (uma abreviação, um nome completo ou um GMT). 62 / 97

fmt:setlocale - I18N fmt:setlocale Permite trocar o locale possibilitando a internacionalização. value Permite definir o locale, podendo este ser um objeto do tipo java.util.locale ou um literal como pt_br. scope Define o escopo da mudança. 63 / 97 fmt:requestencondig - I18N fmt:requestenconding Permite informar o character encoding aplicado nos parâmetros. value - Nome do character encoding que será aplicado quando decodificar parâmetros oriundos da request. 64 / 97

fmt:bundle - I18N fmt:bundle (body tag) Permite informar um arquivo de propriedades para auxiliar na internacionalização das mensagens contidas no corpo da tag. basename (obrigatório) - Nome completo do resource bundle. Lembre-se que segue a forma do pacote, isto é, os diretórios serão separados por.. Não se deve colocar nenhum sufixo, apenas o nome do bundle sem.properties. prefix Prefixo que será anexado ao valor da chave da mensagem de todas as chaves presentes na tag <fmt:message> aninhadas. 65 / 97 fmt:bundle - I18N Exemplo de uso <fmt:bundle basename="labels"> <fmt:message key= label.primeironome"/> <fmt:message key= label.ultimanome"/> </fmt:bundle> Pode ser abreviado para: <fmt:bundle basename="labels" prefix= label."> <fmt:message key= primeironome"/> <fmt:message key= ultimanome"/> </fmt:bundle> 66 / 97

fmt:setbundle - I18N fmt:setbundle (tag empty) Permite informar um arquivo de propriedades para auxiliar na internacionalização das mensagens no escopo definido. basename (opcional) - Nome completo do resource bundle. Lembre-se que segue a forma do pacote, isto é, os diretórios serão separados por.. Não se deve colocar nenhum sufixo, apenas o nome do bundle sem.properties. var - Nome da variável que armazenará um objeto do tipo javax.servlet.jsp.jstl.fmt.localizationcontext. scope - Define o escopo da variável 67 / 97 fmt:message - I18N fmt:message Referencia uma chave em um arquivo de properties obtido através de um bundle. É essencial para fins de internacionalização de um sistema. key - A chave da mensagem que será procurada no bundle. bundle - Localização (nome completo) do bundle onde a chave será procurada. var - Nome da variável que armazenará a mensagem. scope - Define o escopo da variável. 68 / 97

fmt:message - I18N fmt: param (pertence a message) Pode ser utilizado dentro de uma tag fmt:message para fornecer parâmetros para as mensagens encontradas no arquivo de properties referenciados pelo bundle. value - Argumento utilizado para passar parâmetro para a mensagem. 69 / 97 message - I18N Exemplo de uso <fmt:message key= label.misterio"> <fmt:param> <fmt:formatnumber value= ${3} /> </fmt:param> <fmt:param value= carros /> </fmt:message> O arquivo de mensagens deve possuir: label.misterio= Você ganhou {0} {1}! 70 / 97

fmt:formatnumber - I18N fmt:formatnumber Permite converter um objeto numérico para um literal que representa um formato de número, monetário e percentual. var - Nome da variável que terá o resultado String formatado scope - Escopo onde a variável será armazenada. value - Qualquer valor numérico para ser formatado. type - Especifica o tipo do valor que será formatado. Os valores possíveis são: number, currency, ou percent. pattern - Padrões de formatação customizados. Ver em java.text.decimalformat. 71 / 97 formatnumber - I18N fmt:formatnumber currencycode De acordo com a ISO 4217. Aplicado somente quando utilizado no formato monetário, senão será ignorado. (Verifique a classe java.util.currency, método getcurrencycode()) currencysymbol - Representa um símbolo monetário. Aplicado somente quando utilizado o formato monetário, senão será ignorado. (Verifique a classe java.util.currency, método getsymbol(). groupingused - Especifica se deve ou não utilizar separadores de milhares. O valor deste atributo pode ser true ou false. O default é false. 72 / 97

formatnumber - I18N fmt:formatnumber maxintegerdigits - Número máximo de dígitos inteiros no output formatado. minintegerdigits - Número mínimo de dígitos inteiros no output formatado. maxfractiondigits -Número máximo de dígitos fracionários no output formatado. minfractiondigits -Número mínimo de dígitos fracionários no output formatado. 73 / 97 formatnumber - I18N Exemplo de Uso <fmt:setlocale value= pt_br /> <c:set var="objetonumero" value= ${0.452}%>"/> <fmt:formatnumber type="percent" var="numeroformatado" value="${objetonumero}" maxfractiondigits="2" minfractiondigits="2" maxintegerdigits="2" minintegerdigits="1" scope="session" /> <br/>número formatado: ${sessionscope.numeroformatado} <br/>número formatado: ${numeroformatado} Será exibido: Número formatado: 45,20% 74 / 97

formatnumber - I18N Exemplo de Uso <fmt:setlocale value="en_us"/> <c:set var="objetonumero" value="${10999.99}"/> <fmt:formatnumber type="currency" var="numeroformatado" value="${objetonumero}" scope="session" groupingused="true"/> <br/>número formatado: ${sessionscope.numeroformatado} Será exibido Número formatado: $10,999.99 75 / 97 formatnumber - I18N Exemplo de Uso <fmt:setlocale value="pt_br"/> <c:set var="objetonumero" value="${150.4555555}"/> <fmt:formatnumber type="number" var="numeroformatado" value="${objetonumero}" maxfractiondigits="2" minfractiondigits="2" minintegerdigits="1" scope="session" /> <br/>número formatado: ${numeroformatado} Será exibido Número formatado: 150,46 76 / 97

fmt:formatdate - I18N fmt:formatdate Permite converter um objeto do tipo java.util.date para um formato literal que pode representar uma data ou tempo. value - Fornece o valor Date e/ou Time que será formatado. type - Especifica o tipo que será formatado. Os valores possíveis são date, time ou both. 77 / 97 fmt:formatdate - I18N fmt:formatdate datestyle - Utiliza estilos de formatação predefinidos para datas. São aplicados apenas quando o tipo é data ou both, senão será ignorado. Os valores possíveis são: default, short, medium, long e full. timestyle - Utiliza estilos de formatação predefinidos para tempo. São aplicados apenas quando o tipo é time ou both, senão será ignorado. Os valores possíveis são: default, short, medium, long e full. Nota Ver class java.text.dateformat para entender melhor os atributos timestyle e datestyle. 78 / 97

fmt:formatdate - I18N fmt:formatdate pattern - Fornece um estilo de formatação customizado para data e tempo. timezone - Time zone que representa o tempo formatado. var - Nome da variável que receberá a String resultante da formatação. scope - Define o escopo onde a variável será armazenada. 79 / 97 fmt:formatdate - I18N Exemplo de Uso <fmt:setlocale value="en_us"/> <c:set var="objetodata" value="<%=new java.util.date()%>" /> <fmt:formatdate datestyle="full" type="both" timestyle="medium" value="${objetodata}" var="dataformatada" scope="session" /> Data Formatada é: ${dataformatada} 80 / 97

fmt:formatdate - I18N Exemplo de Uso <fmt:setlocale value="pt_br"/> <c:set var="objdata" value="<%=new java.util.date()%>" /> <fmt:formatdate timestyle="full" type="time" value="${objdata}" /> Será exibido 12h11min05s BRT <jsp:usebean id="now" class="java.util.date" /> <fmt:formatdate value="${now}" type="both" pattern="eeee, dd MMMM yyyy, HH:mm" /> Será exibido: Domingo, 11 Maio 2008, 13:31 81 / 97 fmt:parsenumber - I18N fmt:parsenumber Permite converter um literal que representa um numérico (número, formato monetário ou percentual) para um objeto do tipo java.lang.number. value - Valor fornecido que será convertido. type - Especifica o tipo representado pelo literal (String). Os valores possíveis são number, currency ou percent. integeronly - Especifica que somente a parte inteira do valor deve ser considerada. Os valores possíveis são true ou false. var - Nome da variável que receberá um objeto do tipo java.lang.number. scope - Define o escopo da variável. 82 / 97

fmt:parsenumber - I18N fmt:parsenumber pattern - Pode fornecer estilos de padrão customizados que definirão como o valor fornecido. parselocale - Define o locale para desta forma utilizar os padrões de formatação de acordo. É utilizado no momento da conversão. Se o atributo pattern estiver presente, este também será influenciado pelo locale definido. 83 / 97 fmt:parsenumber - I18N Exemplo de uso <fmt:setlocale value="pt_br"/> <fmt:parsenumber integeronly="true" var="numero" type="number" value="100,40" /> <br/>valor: ${numero} e seu tipo real é ${numero.class.name} Será exibido Valor: 100 e seu tipo real é java.lang.long Nota Se trocarmos o atributo integeronly para false teremos Valor: 100.4 e seu tipo real é java.lang.double 84 / 97

fmt:parsenumber - I18N Exemplo de uso <fmt:setlocale value="pt_br"/> <fmt:parsenumber var="numero" type="currency" value="r$ 100,40" /> <br/>valor: ${numero} e seu tipo real é ${numero.class.name} Será exibido: Valor: 100.4 e seu tipo real é java.lang.double <fmt:setlocale value="en_us"/> <fmt:parsenumber var="numero" type="percent" value="96.45%" /> <br/> Valor: ${numero} e seu tipo real é ${numero.class.name} Será exibido: Valor: 0.9645 e seu tipo real é java.lang.double 85 / 97 fmt:parsedate - I18N fmt:parsedate Permite converter um literal que representa uma data ou tempo para um objeto java.util.date. value - Date no formato String para ser convertida. type - Especifica o tipo do String. Os valores possíveis são time, date, ou both. datestyle - Define o estilo da formatação. Aplicado somente quando utilizado date ou both, senão será ignorado. Valores possíveis são: default, short, medium, long e full. timestyle - Define o estilo da formatação. Aplicado somente quando utilizado time ou both, senão será ignorado. Valores possíveis são: default, short, medium, long e full. 86 / 97

fmt:parsedate - I18N fmt:parsedate pattern Padrões de formatação customizados que determinam como a data no formato String será convertida. timezone - Time zone que será utiliza para informação de tempo na conversão. parselocale - Locale que possibilita o uso de estilos prédefinidos para data e tempo na conversão. Se o atributo pattern estiver presente, este também será influenciado pelo locale definido. var Nome da variável que armazenará um objeto java.util.date. scope Define o escopo da variável. 87 / 97 fmt:parsedate - I18N Exemplo de uso <fmt:setlocale value="pt_br"/> <fmt:parsedate var="objetodata" type="date" value="12/10/1977" datestyle="medium" /> <br/>date: ${objetodata} e seu tipo real é ${objetodata.class.name} Será exibido: Date: Wed Oct 12 00:00:00 BRT 1977 e seu tipo real é java.util.date 88 / 97

fmt:settimezone - I18N fmt:settimezone (tag empty) Permite definir uma configuração de time zone em um determinado escopo da aplicação. value (obrigatório) - Fornece o valor do time zone. O valor pode ser um time zone suportado pelo Java como America/Los_Angeles ou um time zone customizado como GMT-8. Ver em java.util.timezone. var - Nome da variável que armazenará um objeto do tipo java.util.timezone. scope - Define o escopo da variável. 89 / 97 fmt:settimezone - I18N Exemplo de uso <fmt:setlocale value="pt_br"/> <jsp:usebean class="java.util.date" id="now"/> <fmt:formatdate datestyle="short" timestyle="full" type="both" value="${now}" var="dataformatada" scope="session" /> <br/>tempo é: ${dataformatada} <fmt:settimezone value="gmt-8"/> <jsp:usebean class="java.util.date" id="nowzone"/> <fmt:formatdate datestyle="short" timestyle="full" type="both" value="${nowzone}" var="dataformatada" scope="session" /> <br/>tempo é: ${dataformatada} Será exibido: Tempo é: 11/05/08 13h32min39s BRT Tempo é: 11/05/08 08h32min39s GMT-08:00 90 / 97

fmt:timezone - I18N fmt:timezone (body tag) Permite informar um time zone para os objetos contidos no corpo da tag. value (obrigatório) - Fornece o valor do time zone. O valor pode ser um time zone suportado pelo Java como America/Los_Angeles ou um time zone customizado como GMT-8. Ver em java.util.timezone. 91 / 97 fmt:timezone x fmt:settimezone - I18N Exemplo de uso: <fmt:timezone value="gmt-8"> <jsp:usebean class="java.util.date" id="nowzone"/> <fmt:formatdate datestyle="short" timestyle="full" type="both" value="${nowzone}" var="dataformatada" scope="session" /> <br/>tempo é: ${dataformatada} </fmt:timezone> <jsp:usebean class="java.util.date" id="now"/> <fmt:formatdate datestyle="short" timestyle="full" type="both" value="${now}" var="dataformatada" scope="session" /> <br/>tempo é: ${dataformatada} <fmt:settimezone value="gmt-5"/> <jsp:usebean class="java.util.date" id="nowzone2"/> <fmt:formatdate datestyle="short" timestyle="full" type="both" value="${nowzone2}" var="dataformatada" scope="session" /> <br/>tempo é: ${dataformatada} 92 / 97

Biblioteca Functions Biblioteca Functions Para esta biblioteca é recomendável utilizar o prefixo fn. Coleções Operações com String length length, touppercase, tolowercase, substring, substringafter, substringbefore, trim, replace, indexof, startswith, endswith, contains, split, join, containsignorecase, escapexml. 93 / 95 Biblioteca Functions Coleções length Pode ser aplicado em qualquer tipo de coleção suportada pelo c:foreach e retorna a quantidade de elementos. Se aplicado em uma String, retorna a quantidade de caracteres. Nota A interface java.util.collection define apenas método size() não estando em conformidade com a especificação de um JavaBeans, e, por isso não é possível acessá-lo automaticamente via EL. Apenas é possível saber se a coleção esta vazia ou não acessando o o método isempty() (compatível com JavaBeans). 94 / 97

fn:length Exemplo de uso <% java.util.collection estados = new java.util.arraylist(); estados.add(entidade.estado.rj); estados.add(entidade.estado.mg); estados.add(entidade.estado.sp); estados.add(entidade.estado.to); pagecontext.setattribute("estados",estados); %> Tamanho da coleção: ${fn:length(estados)} Tamanho da String: ${fn:length("ola Mundo!")} Será exibido respectivamente 4 e 10. 95 / 97 Funções aplicadas a String Operações com String touppercase, tolowercase, substring, substringafter, substringbefore, trim, replace, indexof, startswith, endswith, contains, split, join containsignorecase, escapexml. Exemplo de uso: ${fn:escapexml("<strong>ola mundo</strong>")}<br/> ${fn:touppercase("<strong>ola mundo</strong>")}<br/> ${fn:substring("<strong>ola mundo</strong>",12,17)}<br/> 96 / 97

Referências JSTL: http://java.sun.com/products/jsp/jstl/ ISO 4217 - Moedas: http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_ standards_other/currency_codes/currency_codes_list-1.htm ISO 3166 Nome dos países http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_na mes_and_code_elements.htm ISO 639 - Linguagens http://www.loc.gov/standards/iso639-2/php/code_list.php 97 / 97