Anda di halaman 1dari 57

AULA 12

JSTL
Prof. Andr Luis Schwerz
andreluis@utfpr.edu.br andreschwerz@gmail.com

Objetivos da Aula
Aprenderemos:

Motivao
Falta de padro no desenvolvimento JSP
Scriptlets espalhados em vrios pginas Cdigo confuso = manuteno +trabalhosa Regras de negcio no deveriam ser tratadas dentro do JSP (foge ao padro MVC) JSP deve ser usado somente para a camada de visualizao (viewer), somente exibindo o contedo dos objetos e nada de scriptlets.

Tag Libs
Biblioteca de Tags Estende a semntica das pginas jsp Tags personalizadas Facilita o entendimento de pginas jsp

JSTL - JSP Standard Tag Library


Conjunto de marcaes (tags) que encapsulam funcionalidades comuns a muitas aplicaes JSP:
Linguagem de Expresso Simplifica o processo de criao de pginas Reduo ou supresso do uso de scriptlets
Melhoria na legibilidade;

Estrutura da JSTL
Diviso em cinco taglibs:
Core: sada, repetio, deciso e seleo
http://java.sun.com/jsp/jstl/core

Database: acesso a BD
http://java.sun.com/jsp/jstl/sql

Formatting e I18N: formatao e internacionalizao


http://java.sun.com/jsp/jstl/fmt

XML Processing: processamento de documentos XML


http://java.sun.com/jsp/jstl/xml

Funes Diversas
http://java.sun.com/jsp/jstl/functions

Incluso de Taglibs
Formato:

<%@ <%@ <%@ <%@ <%@

taglib taglib taglib taglib taglib

uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> uri="http://java.sun.com/jsp/jstl/xml" prefix="xml" %> uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

Tags JSTL
rea Core Sub-Funo Suporte a Variveis Controle de Fluxo Gerenciamento de URL Core XML Controle de Fluxo Transformao Local Internacionalizao Formatao de Mensagem Formatao de Datas e Nmeros Banco de Dados Funes SQL Tamanho de Colees Manipulao de Strings Prefixo

fmt sql fn

Biblioteca JSTL CORE

Tag out
Definio:
Imprime o valor de uma expresso.

Atributos:
Nome value default escapeXml Obrigatrio True False False Expresso avaliada. Valor padro se o valor resultante null. Determina se os caracteres <,>,&,'," na string resultante devem ser convertido para cdigo. Valor padro true. Descrio

Corpo da tag:
Atributo default

Exemplos out
<c:out value="${umaExpressao}"/> <c:out value="Texto${umaExpressao}${outraExpressao}"/> <c:out value="Texto"/>

<c:out value="${pessoa.nome}" />

<c:out escapeXml="true" value="<html>" />

<c:out value="${a}" default="nulo" /> <c:out value="${a}"> Nulo</c:out>

Tag if
Definio:
Executa o corpo da tag apenas se a expresso de teste for verdadeira.

Atributos:
Nome test var Scope Obrigatrio True False False Descrio Indica a condio a ser avaliada. Nome da varivel de escopo exportada para o valor resultante do teste de condicional. O tipo da varivel de escopo Boolean. Escopo de var.

Corpo da tag:
Bloco a ser executado se a expresso teste for verdadeira.

Exemplo if
<c:if test=${usuario.nome == 'Felipe' || usuario.nome == 'Michael'}> Permisso ok!<br> </c:if> <c:if test=${usuario.nome == 'Felipe'} var=acesso> Permisso ok!<br> </c:if> Acesso: <c:out value=${acesso}/>

Tag choose
Definio:
Tag condicional que estabelece um contexto para operaes condicionais mutuamente exclusivas, definidas por <when> e <otherwise>.

Atributos:
No h atributos.

Corpo da Tag:
Tags <when> (1 ou +) e <otherwise> (0-1)

Tag when
Definio:
Inclui o que for definido em seu corpo se sua condio for avaliada como verdadeira.

Atributos:
Nome test Obrigatrio True Descrio Testa a condio indicando se o corpo ser ou no incluido.

Corpo da Tag:
Bloco a ser executado quando condio teste for verdadeira

Tag otherwise
Definio:
Subtag da tag <choose> que acompanha as tags <when> e executa somente se todas as condies anteriores forem avaliadas como false.

Atributos:
No h atributos.

Corpo da Tag:
Bloco a ser executado quando condio teste for verdadeira.

Exemplo
<c:choose> <c:when test=${usuario.nome == 'Felipe'}> Permisso ok!<br/> </c:when> <c:when test=${usuario.nome == 'Michael'}> Permisso ok!<br/> </c:when> <c:otherwise> Permisso negada!<br/> </c:otherwise> </c:choose>

Exemplo
<c:choose> <c:when test="${nota lt 30}"> Reprovado </c:when> <c:when test="${nota lt 70}"> Recuperao </c:when> <c:otherwise> Aprovado </c:othewise> </c:choose>

Tag forEach
Definio:
Tag de interao. Aceita diferentes tipos de colees.

Atributos:
Nome items begin end step var varStatus Obrigatrio False False False False False False Coleo a ser iterada. ndice do primeiro passo da iterao. ndice do ltimo passo da iterao. Frequencia das iteraes. Varivel que recebe o valor de cada iterao. Varivel que recebe o status de cada iterao. Descrio

Corpo da Tag:
Bloco a ser executado em cada iterao.

Exemplo forEach

<table border="1" cellspacing="0" cellpadding="0"> <c:forEach items="${listaPessoa}" var="pessoa" varStatus="status"> <tr> <td><c:out value="${status.count}" /></td> <td><c:out value="${parametro.nome}" /></td> <td><c:out value="${parametro.sobrenome}" /></td> </tr> </c:forEach> </table> <ul> <c:forEach var="i" begin="1" end="10"> <li><c:out value="${i}"/> </li> </c:forEach> </ul>

Tag forTokens
Definio:
Iterao sobre os tokens de uma string.

Atributos:
Nome items delims begin end step var varStatus Obrigatrio True False False False False False False String com os tokens. Delimitadores dos tokens. ndice do primeiro passo para iterao. ndice do ltimo passo para iterao. Frequencia das iteraes. Varivel que recebe o valor de cada iterao. Varivel que recebe o status de cada iterao. Descrio

Corpo da Tag:
Bloco a ser executado em cada iterao.

Exemplo forTokens

<table> <c:forTokens items="a,b;c,d,e,f;g;h" delims=",;" var="token" varStatus="status"> <tr> <td><c:out value="${status.count}"/></td> <td><c:out value="${token}"/></td> </tr> </c:forTokens> </table>

Resumo
out if choose when Mesmo que <%= ... >, mas para expresses. Avalia o corpo da tag se a condio for verdadeira. Tag condicional que estabelece um contexto operaes condicionais mutuamente exclusivas, definidas nas tag <when> e <otherwise>. Subtag de <choose> que inclui seu corpo se sua condio for verdadeira.

Subtag de <choose> que acompanha as tags <when> e otherwise executa somente se todas as condies anteriores forem falsas. forEach forTokens Tag de iterao bsica, aceita uma grande quantidade de tipos de colees e suporta subsetting e outras funcionalidade. Iterao sobre tokens, separados pelos delimitadores fornecidos.

Tag set
Definio:
Define o valor de uma varivel ou propriedade de um objeto.

Atributos:
Nome var value target property Scope Obrigatrio False False False False False Nome da varivel Valor a ser atribudo na varivel. Objeto alvo. Propriedade do objeto alvo. Escopo da varivel (page, request, session ou application). Descrio

Corpo da Tag:
Atributo value

Exemplo set

<c:set var="nome" value="Andre"/><br> Varivel nome: <c:out value="${nome}"/><br>

<c:set target="${usuario}" property="nome" value="${nome}"/> Propriedade nome do objeto usurio: &nbsp; <c:out value="${usuario.nome}"/><br>

Tag remove
Definio:
Remove uma varivel de escopo.

Atributos:
Nome var scope Obrigatrio True False Descrio Nome da varivel a ser removida. Escopo da varivel (page, request, session ou application).

Corpo da Tag:
No utilizado.

Exemplo remove

Antes da remoo: <c:out value="${nome}"/><br> <c:remove var="nome"/> <c:out value="${nome}" escapeXml="false"> Varivel <i>nome</i> foi removida do escopo! </c:out>

Tag catch
Definio:
Captura uma exceo ocorrida no corpo da tag.

Atributos:
Nome var Obrigatrio False Descrio varivel, de escopo de pgina (page), que receber a exceo. Caso no seja definida, a exceo ser ignorada.

Corpo da Tag:
Bloco (html/jsp/tags) cujas excees sero capturadas pela tag.

Exemplo catch

<%-- O seguinte trecho gera exceo, j que a propriedade NOME no existe na classe usuario --%> <c:catch var="excecao"> <c:set target="${usuario}" property="nome" value="${nome}"/> </c:catch> Exceo:&nbsp; <c:out value="${excecao}">Nenhuma</c:out> <br/>

Tag url
Definio:
Cria uma string representando uma url

Atributos:
Nome var scope value context Obrigatrio false false false false Descrio Varivel que recebe a url. Caso omitido, url ser impressa na pgina. Escopo da varivel. Valor da url (relativa ou absoluta). Contexto da url

Corpo da Tag:
Tags <c:param> (opcionais).

Tag param
Definio:
Cria uma string representando uma url.

Atributos:
Nome Name Value Obrigatrio True False Nome do parmetro. Valor do parmetro. Descrio

Corpo da Tag:
Atributo value

Exemplo url / param

URL direto na pgina:&nbsp; <c:url value="hello.jsp"/>

URL com parmetros atribuda a uma varivel:&nbsp; <c:url value="/hello.jsp" var="url"> <c:param name="nome" value="Andre"/> <c:param name="sobreNome" value="Schwerz"/> </c:url> <c:out value="${url}"/>

Tag redirect
Definio:
Redireciona o cliente para outra URL.

Atributos:
Nome url context Obrigatrio False False URL a ser redirecionada. Contexto da URL redirecionada. Descrio

Corpo da Tag:
Tags <c:param> (opcionais).

Exemplo redirect

<c:redirect url="http://www.justjava.com.br"/>

<c:redirect url="/showUser.jsp"> <c:param name="user" value="felipeal"/> </c:redirect>

Tag import
Definio:
Importa o contedo de uma url.

Atributos:
Nome var scope context url varReader charEncoding Obrigatrio false false false true false false Descrio Varivel que recebe a url. Caso omitido, url ser impressa na pgina. Escopo da varivel. Contexto da url Url do recurso a ser importado. varivel do tipo java.io.Reader que receber a URL cdigo de caracteres (opcional) do recurso da URL

Corpo da Tag:
Tags <c:param> (opcionais).

Biblioteca JSTL FMT

FMT
Sintaxe padro
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

Tag <fmt:formatNumber>
Definio:
Formata um valor numrico de acordo com as preferncias de localizao do usurio ou de forma customizada com nmero, moeda e porcentagem.

Atributos:
Nome value type pattern currencyCode currencySymbol groupingUsed maxIntegerDigits minIntegerDigits maxFractionDigits minFractionDigits var scope Obrig. False False False False False False False False False False False False Valor a ser formatado. Number | Currency |Percent Padro de formatao. Cdigo ISO da moeda. Smbolo da moeda. Indica se a sada conter separadores decimais, de milhar, etc. Dgitos mximos da parte inteira da sada. Dgitos mnimos da parte inteira da sada. Dgitos mximos da parte fracionria da sada. Dgitos mnimos da parte fracionria da sada. Varivel que conter a sada. Escopo da varivel Descrio

Exemplo <fmt:formatNumber>
<fmt:formatNumber type="currency" value="999.999" /> <fmt:formatNumber type="number" value="999.999" /> <fmt:formatNumber type="percent" value="0.10" /> <fmt:formatNumber type="number" pattern="000.000" value="99.99" /> <fmt:formatNumber type="number" pattern="##0.000" value="99.99" /> <fmt:formatNumber type="number" pattern="#,#00.0#" value="2999" /> <fmt:formatNumber type="number" maxFractionDigits="2" value="999.999"/> <fmt:formatNumber type="number" maxIntegerDigits="2" value="899.999"/>

R$ 1.000,00 999,999 10% 099,990 99,990 1.000 99,999

Tag <fmt:parseNumber>
Definio:
Analisa a representao de nmero, moeda ou porcentagem.

Atributos:
Nome value type pattern parseLocale integerOnly var scope Obrigatrio False False False False False False False String a ser analisada number | currency | percent Padro de formatao. Identifica locale para o analisador. Especifica que somente a poro inteira deve ser analisada. Varivel que conter a sada. Escopo da varivel. Descrio

Corpo da Tag:
Atributo value

Exemplo <fmt:parseNumber>

<c:set var="reais" value="R$ 5,00" /> <fmt:parseNumber value="${reais}" type="currency" parseLocale="pt_BR" />

Tag <fmt:formatDate>
Definio:
Formata data/hora

Atributos:
Nome Value Type dataStyle timeStyle Pattern timeZone var scope Obrigatrio True False False False False False False False Valor a ser formatado Date | Time | Both Formatao da data: default | short | meddium | long |full Formatao da hora: default | short | meddium | long |full Padro de formatao customizado TimeZone da data/hora a ser formatado. Varivel que conter a sada Escopo da varivel. Descrio

Corpo da Tag:
No h corpo.

Exemplo <fmt:formatDate>
<jsp:useBean id="data" class="java.util.Date" /> <fmt:formatDate type="date" value="${data}"/> <fmt:formatDate type="time" value="${data}"/> <fmt:formatDate type="both" value="${data}"/> <fmt:formatDate <fmt:formatDate <fmt:formatDate <fmt:formatDate <fmt:formatDate <fmt:formatDate <fmt:formatDate <fmt:formatDate <fmt:formatDate <fmt:formatDate type="date" type="date" type="date" type="date" type="date" type="time" type="time" type="time" type="time" type="time" dateStyle="default" value="${data}"/> dateStyle="short" value="${data}"/> dateStyle="medium" value="${data}"/> dateStyle="long" value="${data}"/> dateStyle="full" value="${data}"/> timeStyle="default" value="${data}"/> timeStyle="short" value="${data}"/> timeStyle="medium" value="${data}"/> timeStyle="long" value="${data}"/> timeStyle="full" value="${data}"/> 16:48:27 16:48 16:48:27 16h48min27s BRST 16h48min27s BRST

29/11/2009 16:48:27 29/11/2009 16:48:27

29/11/2009 29/11/09 29/11/2009 29 de Novembro de 2009 Domingo, 29 de Novembro de 2009

Tag <fmt:parseDate>
Definio:
Analisa o formato da data/hora de acordo com o padro.

Atributos:
Nome Value Type dataStyle timeStyle Pattern timeZone var scope Obrigatrio True False False False False False False False Valor a ser formatado Date | Time | Both Formatao da data: default | short | meddium | long |full Formatao da hora: default | short | meddium | long |full Padro de formatao customizado TimeZone da data/hora a ser formatado. Varivel que conter a sada Escopo da varivel. Descrio

Corpo da Tag:
No h corpo.

Tag <fmt:requestEncoding>
Definio:
Configura a codificao de caractere da requisio.

Atributos:
Nome value Obrigatrio false Descrio Nome da codificao dos caracteres aplicado aos parmetros da requisio.

Corpo da Tag:
No h corpo.

Tag <fmt:setLocale>
Definio:
Define uma varivel locale.

Atributos:
Nome value variant scope Obrigatrio True False False ??? Escopo do Locale. Descrio Exemplo: pt_BR | en_US | pt_PT Ver ISO-639 e ISO-3166

Corpo da Tag:
No h corpo.

Exemplo <fmt:setLocale>

<fmt:setLocale value="en_US"/> <fmt:formatNumber value="9876543.99" type="currency"/><br /> <fmt:setLocale value="pt_BR"/> <fmt:formatNumber value="9876543.99" type="currency"/><br /> <fmt:setLocale value="pt_PT"/> <fmt:formatNumber value="9876543.99" type="currency"/><br />

Tag <fmt:timeZone>
Definio:
Especifica um fuso horrio para o corpo da pgina.

Atributos:
Nome Value Obrigatrio True Descrio O valor do fuso horrio. Uma string interpretada como um ID. Pode ser um ID suportado pela plataforma Java, (tal como "America/Los_Angeles") ou um ID personalizado (tal como "GMT8").

Corpo da Tag:
Tags <fmt:formatDate>

Tag <fmt:setTimeZone>
Definio:
Configura o fuso horrio em uma varivel de configurao.

Atributos:
Nome value Obrigatrio True Descrio O valor do fuso horrio. Uma string interpretada como um ID. Pode ser um ID suportado pela plataforma Java, (tal como "America/Los_Angeles") ou um ID personalizado (tal como "GMT8"). Nome da varivel de escopo que armazenar o fuso horriodo tipo java.util.TimeZone. Escopo da varivel ou do fuso horrio especificado.

var scope

False False

Corpo da Tag:
No h corpo.

Exemplo
<jsp:useBean id="currentDate" class="java.util.Date" /> <fmt:timeZone value="GMT+7:00"> <fmt:formatDate value="${currentDate}" type="both" dateStyle="full" timeStyle="full"/> </fmt:timeZone> <br/> <hr/> <fmt:setTimeZone value="GMT-10:00" var="timeZone" scope="page"/> <fmt:timeZone value="${timeZone}"> <fmt:formatDate value="${currentDate}" type="both" dateStyle="full" timeStyle="full"/> </fmt:timeZone>

Tag <fmt:bundle>
Definio:
Carrega um resource bundle usado no corpo da pgina.

Atributos:
Nome basename prefix Obrigatrio true false Descrio Nome base do resource bundle. Este o nome base do resource que pode ter sufixo tais com .class e .properties O prefixo para o valor da chave da mensagem de qualquer ao <fmt:message>.

Corpo da Tag:
Tags <fmt:message>

Tag <fmt:setBundle>
Definio:
Carrega um resource bundle e o armazena em uma varivel.

Atributos:
Nome Basename var Scope Obrigatrio true False False Descrio Nome base do resource bundle. Este o nome base do resource que pode ter sufixo tais com .class e .properties Nome da varivel de escopo que armazena o resource bundle. Escopo da varivel.

Corpo da Tag:
No h corpo.

Tag <fmt:message>
Definio:
Chave dos mapas para localizao de mensagens e execuo de substituio de parmetros.

Atributos:
Nome key bundle var scope Obrigatrio false false false false Descrio Chave da mensagem que ser buscada. Resource bundle em que a mensagem ser procurada. Varivel que armazena a mensagem. Escopo da varivel.

Corpo da Tag:
Tags <fmt:param>

Exemplo
<fmt:bundle basename="labels"> Hello: <fmt:message key="hello" /> GoodBye: <fmt:message key="goodbye" /> </fmt:bundle> hello=Ol goodbye=At mais

<fmt:bundle basename="file_en" prefix="cliente."> Primeiro Nome: <fmt:message key="primeiroNome" /><br/> ltimo Nome: <fmt:message key="ultimoNome" /><br/> </fmt:bundle> cliente.primeiroNome=First Name cliente.ultimoNome=Last Name cliente.endereco=address

Tag <fmt:param>
Definio:
Fornece um argumento que ser substitudo na mensagem.

Atributos:
Nome Value Obrigatrio True Descrio Argumento usado para ser substitudo.

Corpo da Tag:
Atributo value

Exemplo
<fmt:bundle basename="file_en" prefix="cliente."> Primeiro Nome: <fmt:message key="primeiroNome" /><br/> ltimo Nome: <fmt:message key="ultimoNome" /><br/> <fmt:message key="saudacao"> <fmt:param value="Andr" /> </fmt:message> </fmt:bundle>

cliente.primeiroNome=First Name cliente.ultimoNome=Last Name cliente.endereco=address cliente.saudacao=Ol Sr.{0}

Resumo
Tags setLocale timeZone setTimeZone bundle setBundle message param formatNumber parseNumber formatDate parseDate Descrio Armazena um locale na varivel de configurao locale. Especifica o fuso horrio para o corpo da pgina. Configura a varivel de fuso horrio. Carrega um resource bundle para o corpo da pgina. Carrega um resource bundle e armazena na sua varivel de configurao. Exibe uma mensagem baseado em sua chave. Fornece um argumento que ser substitudo na mensagem. Formata um valor numrico como um nmero, moeda ou porcentagem. Analisa a representao de um nmero, moeda ou porcentagem. Formata a data e/ou hora usando um padro e estilo especificados. Analisa a representao de uma data e/ou hora. requestEncoding Configura a codificao dos caracteres da requisio.

Anda mungkin juga menyukai