Você está na página 1de 55
Linguagem Linguagem de de Expressão, Expressão, JSTL JSTL e e DisplayTag DisplayTag Fornece tags para

Linguagem Linguagem de de Expressão, Expressão, JSTL JSTL

e e DisplayTag DisplayTag

Fornece tags para encapsular funcionalidades complexas para utilização em JSPs

1
1
Motivação Motivação p/ p/ utilização utilização de de Tags Tags Customizadas Customizadas Facilita o

Motivação Motivação p/ p/ utilização utilização de de Tags Tags

Customizadas Customizadas

Facilita o desenvolvimento de futuras páginas JSP e o desenvolvimento de futuras páginas JSP e

permite o reuso de código

de futuras páginas JSP e permite o reuso de código Pois, páginas com excesso de scriptlets

Pois, páginas com excesso de scriptlets dificultam a sua leitura, manutenção e expansão

Facilitam a divisão de tarefas a divisão de tarefas

Possuem sintaxe similar a linguagem XML sintaxe similar a linguagem XML

Podem substituir scriptlets e JavaBeans substituir scriptlets e JavaBeans

2
2
Características Características Pode ser parametrizada com a utilização de atributos Pode acessar todos os objetos

CaracterísticasCaracterísticas

Pode ser parametrizada com a utilização de parametrizada com a utilização de

atributos

Pode acessar todos os objetos disponíveis em umaPode ser parametrizada com a utilização de atributos página JSP Pode modificar a resposta da página

página JSP

Pode modificar a resposta da página que a chamouatributos Pode acessar todos os objetos disponíveis em uma página JSP Você pode criar e iniciar

Você pode criar e iniciar componentes JavaBeansPode acessar todos os objetos disponíveis em uma página JSP Pode modificar a resposta da página

3
3
Como Como Utilizar Utilizar as as Taglibs Taglibs 4

ComoComo UtilizarUtilizar asas TaglibsTaglibs

4
4
Tipos Tipos de de Tag Tag São expressas utilizando sintaxe XML <tlt:tag> body </tlt:tag> Uma

TiposTipos dede TagTag

Tipos Tipos de de Tag Tag São expressas utilizando sintaxe XML <tlt:tag> body </tlt:tag> Uma tag

São expressas utilizando sintaxe XML

<tlt:tag>

body

</tlt:tag>

Uma tag sem corpo pode ser expressa da seguinte maneira

<tlt:tag />

5
5
Importando Importando uma uma biblioteca biblioteca de de tags tags Utilize a diretiva taglib <%@

ImportandoImportando umauma bibliotecabiblioteca dede tagstags

Importando uma uma biblioteca biblioteca de de tags tags Utilize a diretiva taglib <%@ taglib uri

Utilize a diretiva taglib

<%@ taglib uri = ”” prefix = ”” %> uri=”” prefix=”” %>

uri –especifica a localização do TLD (Tag Lib –especifica a localização do TLD (Tag Lib

Descriptor)

prefix – é uma string que é utilizada unicamente – é uma string que é utilizada unicamente

para identificar as tags personalizadas que vc deseja utilizar

6
6
TLD TLD ( ( Tag Tag Lib Lib Descriptor Descriptor ) ) É um arquivo

TLDTLD ((TagTag LibLib DescriptorDescriptor))

É um arquivo XML que descreve o mapeamento entre as tagsTLD TLD ( ( Tag Tag Lib Lib Descriptor Descriptor ) ) Há duas maneiras básicas

Há duas maneiras básicas de especificar esse mapeamento.) É um arquivo XML que descreve o mapeamento entre as tags URL relativo <%@ taglib

URL relativoHá duas maneiras básicas de especificar esse mapeamento. <%@ taglib uri =”/WEB-INF/c.tld” prefix =”c”

<%@ taglib uri=”/WEB-INF/c.tld” prefix=”c” %>

URL absolutotaglib uri =”/WEB-INF/c.tld” prefix =”c” %> <%@ taglib uri =” http://java.sun.com/jstl/core ”

<%@ taglib uri=”http://java.sun.com/jstl/coreprefix=”c” %>

http://java.sun.com/jstl/core ” prefix =”c” %> A página tem que usar exatamente esta URI) <?xml

A página tem que usar exatamente esta URI)

<?xml version="1.0" ?>

<taglib>

<tlib-version>1.0</tlib-version>

<uri>http://java.sun.com/jstl/core</uri>

</taglib>

7
7
JSTL JSTL (JSP (JSP Standard Standard Tag Tag Libraries) Libraries) 8

JSTL JSTL

(JSP (JSP Standard Standard Tag Tag Libraries) Libraries)

8
8
Visão Visão Geral Geral do do JSTL JSTL Linguagem de Expressão (EL) Biblioteca de Tags

VisãoVisão GeralGeral dodo JSTLJSTL

Linguagem de Expressão (EL)Visão Visão Geral Geral do do JSTL JSTL Biblioteca de Tags Core Format SQL XML 9

Biblioteca de TagsVisão Visão Geral Geral do do JSTL JSTL Linguagem de Expressão (EL) Core Format SQL XML

CoreVisão Visão Geral Geral do do JSTL JSTL Linguagem de Expressão (EL) Biblioteca de Tags Format

FormatVisão Visão Geral Geral do do JSTL JSTL Linguagem de Expressão (EL) Biblioteca de Tags Core

SQLVisão Visão Geral Geral do do JSTL JSTL Linguagem de Expressão (EL) Biblioteca de Tags Core

XMLVisão Visão Geral Geral do do JSTL JSTL Linguagem de Expressão (EL) Biblioteca de Tags Core

9
9
Linguagem Linguagem de de Expressão Expressão Permite embutir em atributos expressões dentro de delimitadores ${

LinguagemLinguagem dede ExpressãoExpressão

Linguagem Linguagem de de Expressão Expressão Permite embutir em atributos expressões dentro de delimitadores ${

Permite embutir em atributos expressões dentro de

delimitadores ${

atributos, propriedades e métodos. Exemplos

}

facilitando o acesso a

<%=((Usuario)request.getAttribute("usuario")).

getGrupo().getNome()%>

Corresponde a: ${usuario.grupo.nome}
Corresponde a: ${usuario.grupo.nome}

<jsp:getProperty name=“usuario” property=“nome” />

Corresponde a: ${usuario.nome}

10
10
Resolução Resolução de de Identificadores Identificadores A EL transforma identificadores em objetos fazendo uma

ResoluçãoResolução dede IdentificadoresIdentificadores

Resolução de de Identificadores Identificadores A EL transforma identificadores em objetos fazendo uma

A EL transforma identificadores em objetos fazendo

uma chamada ao método PageContext.findAttribute(String id) que

procura o atributo id nos quatros escopos JSP:

page, request, session e application,

respectivamente, e retorna um objeto associado ao identificador ou null, caso não seja encontrado

11
11
Objetos Objetos implícitos implícitos fornecidos fornecidos pelas pelas EL EL Além de acesso a JavaBean,

ObjetosObjetos implícitosimplícitos fornecidosfornecidos pelaspelas ELEL

Além de acesso a JavaBean, a EL também facilitam a leitura de parâmetros de requisição, cabeçalhos HTTP, cookies e parâmetros de inicializaçãoimplícitos fornecidos fornecidos pelas pelas EL EL Os objetos implícitos têm precedência sobre as variáveis

Os objetos implícitos têm precedência sobre as variáveis (objetos) de escopocabeçalhos HTTP, cookies e parâmetros de inicialização param : acessa parâmetros de request . Exemplo campo

param: acessa parâmetros de request . Exemplo campo login de : acessa parâmetros de request. Exemplo campo login de

um formulário:

<%= request.getParameter ("login") %> getParameter("login") %>

${param.login } ou ${param[ ‘ login ‘ ]} login} ou ${param[login]}

paramValues: quando o parâmetro tiver múltiplos valores. Ex: : quando o parâmetro tiver múltiplos valores. Ex:

${paramValues[perfies][0]}

12
12
Objetos Objetos implícitos implícitos fornecidos fornecidos pelas pelas EL EL initParam : parametros de

ObjetosObjetos implícitosimplícitos fornecidosfornecidos pelaspelas ELEL

implícitos fornecidos fornecidos pelas pelas EL EL initParam : parametros de inicialização fornecidos no

initParam: parametros de inicialização fornecidos no arquivo web.xml

Ex: ${initParam.localizacao} ${initParam.localizacao}

equivale a:fornecidos no arquivo web.xml Ex: ${initParam.localizacao} pageContext.getServletContext(). getInitParameter( “

pageContext.getServletContext().

getInitParameter(localizacao)

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

<web-app

>

<context-param>

<param-name>localizacao</param-name>

<param-value>pt_BR</param-value>

</context-param>

.

.

.

</web-app>

13
13
Objetos Objetos implícitos implícitos fornecidos fornecidos pelas pelas EL EL header : acessa os atributos

ObjetosObjetos implícitosimplícitos fornecidosfornecidos pelaspelas ELEL

implícitos fornecidos fornecidos pelas pelas EL EL header : acessa os atributos do cabeçalho HTTP.

header : acessa os atributos do cabeçalho HTTP. headerValues: para cabeçalhos de múltiplos

valores

HTTP. headerValues : para cabeçalhos de múltiplos valores Ex: ${header. host } ou ${header[ ‘ host

Ex: ${header.host} ou ${header[host]}

${headerValues[Accept-Language][0]}

14
14
Objetos Objetos implícitos implícitos fornecidos fornecidos pelas pelas EL EL pageContext : Mesmo objeto

ObjetosObjetos implícitosimplícitos fornecidosfornecidos pelaspelas ELEL

pageContext: Mesmo objeto pageContext do JSP : Mesmo objeto pageContext do JSP

pelas EL EL pageContext : Mesmo objeto pageContext do JSP Exemplo: ${pageContext} pageScope , requestScope ,

Exemplo: ${pageContext}

pageScope, requestScope , sessionScope , applicationScope : acessa objetos em um contexto específico , requestScope, sessionScope, applicationScope: acessa objetos em um contexto específico

Ex: ${requestScope.funcionario} ${sessionScope.funcionario} ${requestScope.funcionario} ${sessionScope.funcionario}

cookies: retorna um cookie a partir do seu nomeobjetos em um contexto específico Ex: ${requestScope.funcionario} ${sessionScope.funcionario} Ex: ${cookie.favorito} 15

${sessionScope.funcionario} cookies: retorna um cookie a partir do seu nome Ex: ${cookie.favorito} 15

Ex: ${cookie.favorito}

15
15
Operadores Operadores A EL fornece operadores aritméticos, lógicos e relacionais Aritméticos : + , -

OperadoresOperadores

A EL fornece operadores aritméticos, lógicos e relacionaisOperadores Operadores Aritméticos : + , - , * , / ( div ), % (

Aritméticos: + , - , * , / ( div ), % ( mod ) : +, -, *, / (div), % (mod)

Lógicos: && ( and ), || ( or ), ! ( not ), empty : && (and), ||(or), !(not), empty

Relacionais: == ( eq ), != ( ne ), < ( lt ), > ( : == (eq), != (ne), < (lt), > (gt) <= (le), >= (ge)

Exemplos: ${10 % 3} produz 1 ${10 % 3} produz 1

${-produto.preco} resultado -50 resultado -50

OBS: operador empty determina se um valor é nulo ou vazio. empty determina se um valor é nulo ou vazio.

A operação empty obj retorne true caso obj seja null empty obj retorne true caso obj seja null

Também retorna true para : uma string vazia, um array vazio, ou um objeto que implemete Map true para: uma string vazia, um array vazio, ou um objeto que implemete Map ou List e esteja vazio

16
16
JSTL JSTL JSP Standard Tag Library 17

JSTLJSTL

JSP Standard Tag Library

17
17
JSTL JSTL É uma especificação do JCP (JSR-52) e faz parte do JSP 2.0 e

JSTLJSTL

É

uma especificação do JCP (JSR-52) e faz parte do JSP 2.0 e do J2EE 1.4JSTL JSTL É É composta de quatro taglibs (Core, Format, XML e SQL) Suporta linguagem de

É

composta de quatro taglibs (Core, Format, XML e SQL) taglibs (Core, Format, XML e SQL)

Suporta linguagem de expressão (EL)É composta de quatro taglibs (Core, Format, XML e SQL) Oferece mais controle ao autor de

Oferece mais controle ao autor de páginas sem necessariamente aumentar a complexidadeFormat, XML e SQL) Suporta linguagem de expressão (EL) Estimula a separação da apresentação e lógica

Estimula a separação da apresentação e lógicacontrole ao autor de páginas sem necessariamente aumentar a complexidade Estimula o investimento em soluções MVC

Estimula o investimento em soluções MVCao autor de páginas sem necessariamente aumentar a complexidade Estimula a separação da apresentação e lógica

18
18
Histórico Histórico Julho/2001 - Criado o projeto (JSR-052) Junho/2002 – lançado o JSTL 1.0 baseado

HistóricoHistórico

Julho/2001 - Criado o projeto (JSR-052)Histórico Histórico Junho/2002 – lançado o JSTL 1.0 baseado no JSP 1.2 (Tomcat4 e maioria dos

Junho/2002 – lançado o JSTL 1.0 baseado no JSP 1.2 (Tomcat4 e maioria dos servidores corporativos)Histórico Histórico Julho/2001 - Criado o projeto (JSR-052) Janeiro/2004 - lançado o JSTL 1.1 baseado no

Janeiro/2004 - lançado o JSTL 1.1 baseado no JSP 2.0 (Tomcat 5)o JSTL 1.0 baseado no JSP 1.2 (Tomcat4 e maioria dos servidores corporativos) Julho/2004 - lançado

Julho/2004 - lançado o JSTL 1.1.11.2 (Tomcat4 e maioria dos servidores corporativos) Janeiro/2004 - lançado o JSTL 1.1 baseado no JSP

19
19
JSTL JSTL Core (núcleo): Contém tags usadas para controle de fluxo e saída de mensagens

JSTLJSTL

Core (núcleo): Contém tags usadas para controle de fluxo e saída de mensagens (núcleo): Contém tags usadas para controle de fluxo e saída de mensagens

XML: Tags utilitárias para o processamento de XML : Tags utilitárias para o processamento de XML

Format (Internacionalização): usadas para formatação de texto, valores monetários e números com base em uma determinada (Internacionalização): usadas para formatação de texto, valores monetários e números com base em uma determinada localização

SQL: fornece tags para acesso a banco de maneira simplificada sem a necessidade de código : fornece tags para acesso a banco de maneira simplificada sem a necessidade de código Java

20
20
JSTL JSTL - - Core Core <c:out> : avalia uma expressão e exibe o resultado

JSTLJSTL -- CoreCore

JSTL JSTL - - Core Core <c:out> : avalia uma expressão e exibe o resultado na

<c:out>: avalia uma expressão e exibe o resultado na página

<c:out value="${usuario.nome}"> Usuário Anônimo </c:out>

Usuário Anônimo </c:out> É equivalente a: Será exibido apenas quando o value for

É equivalente a:

Será exibido apenas quando o value for vazio ou null

<c:out value="${usuario.nome}" default="Usuário Anônimo/>

<c:out value=”” escapeXml=”false”>

   
 
 

Usuario <i>anônimo</i>. </c:out>

   
 

Atributo opcional, indica se caracteres

especiais (<, &,

)

devem ser convertidos

para entidades XML equivalentes (&lt,

&amp,

).

Default é true

 
21
21
JSTL JSTL - - Core Core <c:set> : define o valor de uma variável de

JSTLJSTL -- CoreCore

<c:set>: define o valor de uma variável de escopo : define o valor de uma variável de escopo

Valor default

<c:set var="usuario" scope="page" value="${sessionScope.usuarioLogado}"/>
<c:set var="usuario" scope="page"
value="${sessionScope.usuarioLogado}"/>

É usado para nome de variáveis de escopo

ou uma propriedadeÉ usado para nome de variáveis de escopo <c:set target ="${usuario}" property

<c:set target="${usuario}" property="nome" value="Maria" />

property ="nome" value ="Maria" /> property e value correspondem a nome/valor da

property e value correspondem a nome/valor da propriedade

22
22
JSTL JSTL - - Core Core Exemplos: <c:set var ="nome" value ="Maria" /> Variável nome

JSTLJSTL -- CoreCore

JSTL JSTL - - Core Core Exemplos: <c:set var ="nome" value ="Maria" /> Variável nome :

Exemplos:

<c:set var="nome" value="Maria"/> Variável nome: <c:out value="${nome}"/>

<c:set target="${usuario}" property="nome" value="${nome}"/> Propriedade nome do objeto usuário:

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

23
23
JSTL JSTL - - Core Core <c:remove> : remove uma variável de escopo Não possui

JSTLJSTL -- CoreCore

JSTL JSTL - - Core Core <c:remove> : remove uma variável de escopo Não possui corpo

<c:remove>: remove uma variável de escopo

Não possui corpoCore <c:remove> : remove uma variável de escopo Atributos var – variável a ser removida scope

Atributos: remove uma variável de escopo Não possui corpo var – variável a ser removida scope

var – variável a ser removida: remove uma variável de escopo Não possui corpo Atributos scope – escopo (opcional) da variável

scope – escopo (opcional) da variávelNão possui corpo Atributos var – variável a ser removida <c:remove var ="usuario"/> Antes da

<c:remove var="usuario"/>

Antes da remoção: <c:out value="${usuario}"/> <c:remove var="usuario"/> <c:out value="${usuario}" escapeXml="false"> Variável <i>usuario</i> foi removida do escopo! </c:out>

24
24
JSTL JSTL - - Core Core <c:catch> : captura uma exceção ocorrida no corpo da

JSTLJSTL -- CoreCore

JSTL JSTL - - Core Core <c:catch> : captura uma exceção ocorrida no corpo da tag

<c:catch>: captura uma exceção ocorrida no corpo da tag

<c:catch var="excecao"> <c:set target="${usuario}" property="NOME" value="Joao" /> </c:catch> <c:out value="${excecao}" > tudo ok! </c:out>

25
25
JSTL JSTL - - Core Core <c:if> : executa o corpo da tag apenas se

JSTLJSTL -- CoreCore

JSTL JSTL - - Core Core <c:if> : executa o corpo da tag apenas se uma

<c:if>: executa o corpo da tag apenas se uma expressão for verdadeira

<c:if test="${empty sessionScope.usuarioLogado}"> <c:redirect url="login.jsp"/> </c:if>

26
26
JSTL JSTL - - Core Core <c:chose> : executa uma tag quando a expressão da

JSTLJSTL -- CoreCore

JSTL JSTL - - Core Core <c:chose> : executa uma tag quando a expressão da subtag

<c:chose>: executa uma tag quando a expressão da subtag for verdadeira

<c:choose> <c:when test="${empty usuario.username}"> <b>Campo login é
<c:choose>
<c:when test="${empty usuario.username}">
<b>Campo login é obrigatório!<br>
</c:when>
<c:when test="${empty usuario.senha}">
<b>Campo senha é obrigatório!<br>
</c:when>
<c:when test="${usuario.senha ne usuario.username}">
<b>Senha inválida!<br>
</c:when>
<c:otherwise>
<c:set var="usuarioLogado" scope="session"
value="${usuario}"/>
<c:redirect url="index.jsp"/>
</c:otherwise>
</c:choose>

27

JSTL JSTL - - Core Core forEach - é usada para percorrer uma coleção de

JSTLJSTL -- CoreCore

forEach - é usada para percorrer uma coleção de objetos ou uma faixa de valores é usada para percorrer uma coleção de objetos ou uma faixa de valores

<c:forEach var="item" items="${colecao}">

<c:out value="${item}" /> </c:forEach>

Opcionalmente, pode-se utilizar os atributos begin e end (para definir o índice do primeiro) e step begin e end (para definir o índice do primeiro) e step

para definir o intervalo da interação

<c:forEach var="i" begin="1" end="10"> <li> ${i} </c:forEach>

28
28
JSTL JSTL - - Core Core c:param – serve para passar nome e o valor

JSTLJSTL -- CoreCore

c:param – serve para passar nome e o valor de um – serve para passar nome e o valor de um

parâmetro. É uma sub-tag das demais tags de manipulação de URL (<c:url>, <c:import> e <c:redirect>)

Atributos, <c:import> e <c:redirect> ) name – nome do parâmetro value – valor de parâmetro

name – nome do parâmetro – nome do parâmetro

value – valor de parâmetro (pode ser o corpo da tag) – valor de parâmetro (pode ser o corpo da tag)

29
29
JSTL JSTL - - Core Core c:url – cria uma string contendo uma URL c:import

JSTLJSTL -- CoreCore

c:url – cria uma string contendo uma URL – cria uma string contendo uma URL

c:import – importa o conteúdo de uma URL – importa o conteúdo de uma URL

c:redirect – redireciona o cliente da aplicação para uma outra URL – redireciona o cliente da aplicação para uma outra URL

30
30
JSTL JSTL – – Core Core (<c:import> (<c:import> Importa o conteúdo de uma URL Tem

JSTLJSTL CoreCore (<c:import>(<c:import>

Importa o conteúdo de uma URL– – Core Core (<c:import> (<c:import> Tem um comportamento semelhante a <jsp:include> e

Tem um comportamento semelhante a <jsp:include> e possibilita adicionar recursos localizados fora do container web(<c:import> Importa o conteúdo de uma URL O resultado será exibido na tela ou atribuído a

O resultado será exibido na tela ou atribuído a uma variável definida pelos atributos opcionais (var e scope) ou a um java.io.Reader (atributo varReader)adicionar recursos localizados fora do container web Exemplo: <c:import url= http://www.teste.com/topo.htm

Exemplo:(var e scope) ou a um java.io.Reader (atributo varReader) <c:import url= http://www.teste.com/topo.htm /> 31

<c:import url= http://www.teste.com/topo.htm /> url=http://www.teste.com/topo.htm />

31
31
JSTL JSTL – – Format Format Fornece suporte: internacionalização (i18n, internationalization – ‘i‘ + 18

JSTLJSTL FormatFormat

JSTL JSTL – – Format Format Fornece suporte: internacionalização (i18n, internationalization – ‘i‘ + 18

Fornece suporte:

internacionalização (i18n, internationalization – ‘i‘ + 18 letras + ‘n‘) internationalization – ‘i‘ + 18 letras + ‘n‘)

Fornece tags para internacionalização de mensagens através de resource bundlesinternationalization – ‘i‘ + 18 letras + ‘n‘) Formatação Formata números, datas e horas de acordo

Formataçãode mensagens através de resource bundles Formata números, datas e horas de acordo com a

Formata números, datas e horas de acordo com a localização (i10n – localization) do usuário+ 18 letras + ‘n‘) Fornece tags para internacionalização de mensagens através de resource bundles Formatação

32
32
JSTL JSTL – – Format Format ( (fmt:formatNumber) fmt:formatNumber ) Formata um número, valor monetário

JSTLJSTL FormatFormat ((fmt:formatNumber)fmt:formatNumber)

Formata um número, valor monetário ou porcentagem, de acordo com as preferências de localização– Format Format ( (fmt:formatNumber) fmt:formatNumber ) Atributos value – valor a ser formatado (pode ser

Atributosporcentagem, de acordo com as preferências de localização value – valor a ser formatado (pode ser

value – valor a ser formatado (pode ser o corpo da tag) – valor a ser formatado (pode ser o corpo da tag)

type (opcional) – “ number ” (default), “ currency ” ou “ percent ” (opcional) – “number” (default), “currency” ou “percent

pattern (opcional) mascara de formatação, de acordo com as regras de java.text.DecimalFormat (opcional) mascara de formatação, de acordo com as regras de java.text.DecimalFormat

currencySymbol (opcional)– símbolo monetário (como R$ ou US$) (opcional)– símbolo monetário (como R$ ou US$)

currencyCode (opcional) código ISO da moedade acordo com as regras de java.text.DecimalFormat currencySymbol (opcional)– símbolo monetário (como R$ ou US$) 33

33
33
JSTL JSTL – – Format Format ( (fmt:formatNumber) fmt:formatNumber ) groupingUsed – determina se os

JSTLJSTL FormatFormat ((fmt:formatNumber)fmt:formatNumber)

groupingUsed – determina se os dígitos serão agrupados (ex: determina se os dígitos serão agrupados (ex:

5.350 em vez de 5350). A formatação é determinada pelo Locale

maxIntegerDigits/minIntegerDigits – números mínimos e máximos da parte inteira

maxFractionDigits/minFractionDigits – números mínimos e máximos de casas decimais

var – variável (opcional) que conterá a saída – variável (opcional) que conterá a saída

scope - (opcional) escopo da variável - (opcional) escopo da variável

Corpo da Tag: atributo value : atributo value

34
34
JSTL JSTL – – Format Format ( (fmt:formatNumber) fmt:formatNumber ) < fmt:formatNumber value ="9876543,21

JSTLJSTL FormatFormat ((fmt:formatNumber)fmt:formatNumber)

<fmt:formatNumber value="9876543,21" type="currency"/>

<fmt:formatNumber value="12,3" pattern=".000"/>

<fmt:formatNumber value="123456,7891" pattern="#,#00.0#"/>

<fmt:formatNumber value="1234" type="currency“ var=“moeda"/>

${moeda} <fmt:formatNumber minFractionDigits="5“

maxFractionDigits="5">

<%=Math.PI%>

</fmt:formatNumber>

R$ 1.234.567,89

12,300

123.456,79

R$ 1.234,00

3,14159

35
35
JSTL JSTL – – Format Format <fmt:parseNumber> <fmt:parseNumber> Obtém um Number a partir de uma

JSTLJSTL FormatFormat <fmt:parseNumber><fmt:parseNumber>

Format <fmt:parseNumber> <fmt:parseNumber> Obtém um Number a partir de uma String value – valor

Obtém um Number a partir de uma String

value – valor a ser transformado – valor a ser transformado

integerOnly (opcional) faz o parsing apenas da parte inteira do número (opcional) faz o parsing apenas da parte inteira do número

Outros atributos opcionais: var, scope, type e pattern(opcional) faz o parsing apenas da parte inteira do número <c:set var ="reais" value ="R$

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

Corpo da Tag: atributo value : atributo value

36
36
JSTL JSTL – – Format Format <fmt:formatDate> <fmt:formatDate> Formata uma data e/ou hora de acordo

JSTLJSTL FormatFormat <fmt:formatDate><fmt:formatDate>

Formata uma data e/ou hora de acordo com a Localização ou com parâmetros customizadosFormat <fmt:formatDate> <fmt:formatDate> Atributos: value : data a ser formatada Type (opcional):

Atributos:acordo com a Localização ou com parâmetros customizados value : data a ser formatada Type (opcional):

value: data a ser formatada : data a ser formatada

Type (opcional): date (default), time ou both (opcional): date (default), time ou both

dateStyle ou timeStyle (opcional) : nível de detalhamento da data/hora ou timeStyle (opcional) : nível de detalhamento da data/hora

timeZone (opcional): define o fuso-horário (opcional): define o fuso-horário

Outros atributos opcionais: var , scope e pattern var, scope e pattern

37
37
JSTL JSTL – – Format Format <fmt:formatDate> <fmt:formatDate> <jsp:useBean id ="agora"

JSTLJSTL FormatFormat <fmt:formatDate><fmt:formatDate>

<jsp:useBean id="agora" class="java.util.Date" /> <br> <fmt:formatDate value="${agora}" timeStyle="long" dateStyle="long"/>

<br> <fmt:formatDate value="${agora}" pattern="dd.MMM.yy"/>

38
38
JSTL JSTL – – Format Format <fmt:parseDate> <fmt:parseDate> Obtém um java.util.Date a partir de

JSTLJSTL FormatFormat <fmt:parseDate><fmt:parseDate>

Obtém um java.util.Date a partir de uma String java.util.Date a partir de uma String

AtributosObtém um java.util.Date a partir de uma String value : String que será transformada type :

value: String que será transformada : String que será transformada

type: (opcional) date (default), time ou both : (opcional) date (default), time ou both

dateStyle ou timeStyle : (opcional) nível de detalhamento da data/hora ou timeStyle : (opcional) nível de detalhamento da data/hora

timeZone: (opcional) define o fuso-horário : (opcional) define o fuso-horário

parseLocale: Locale usado para personalizar a transformação : Locale usado para personalizar a transformação

Outros atributos opcionais: var , scope e pattern var, scope e pattern

39
39
JSTL JSTL – – Format Format <fmt:parseDate> <fmt:parseDate> <fmt:parseDate value

JSTLJSTL FormatFormat <fmt:parseDate><fmt:parseDate>

<fmt:parseDate value="13:15" pattern="HH:mm" />

<%-- para o formato americano --%> <fmt:parseDate value="07/16/2005" dateStyle="short" parseLocale="en_US" var="dataUS" />

<%-- data formatada --%> <fmt:formatDate value="${dataUS}" dateStyle="full"/>

Thu Jan 01 13:15:00 BRT 1970

Sábado, 16 de Julho de 2005

40
40
Display Display Tag Tag Library Library É uma suíte open source de tags customizadas que

DisplayDisplay TagTag LibraryLibrary

É uma suíte open source de tags customizadas que fornecem uma apresentação web de alto nível para ser open source de tags customizadas que fornecem uma apresentação web de alto nível para ser usada em aplicações MVC

É possível mostrar tabelas, isto é, listar as informações de objetos de uma aplicação com diversas funcionalidades:web de alto nível para ser usada em aplicações MVC diferenciação nas cores das linhas, ordenação

de objetos de uma aplicação com diversas funcionalidades: diferenciação nas cores das linhas, ordenação nas

diferenciação nas cores das linhas, ordenação nas colunas, paginação dos dados, agrupamento de informações, exportação dos dados, links e decoração customizável

41
41
Exemplo Exemplo <%@ taglib uri="/WEB-INF/displaytag-11.tld" prefix="display" %>   <%

ExemploExemplo

<%@ taglib uri="/WEB-INF/displaytag-11.tld" prefix="display" %>

 

<% List teste = new ArrayList( 4 ); teste.add( "Teste String 1" ); teste.add( "Teste String 2" ); teste.add( "Teste String 3" ); teste.add( "Teste String 4" ); request.setAttribute("teste", teste);

%>

Saída

<display:table name="teste" />

 

Teste String 1 Teste String 2

 

Teste String 3 Teste String 4

42
42
Instalação Instalação Deve seguir os seguintes passos: Colocar o arquivo displaytag.tld no diretório WEB-INF da

InstalaçãoInstalação

Instalação Instalação Deve seguir os seguintes passos: Colocar o arquivo displaytag.tld no diretório WEB-INF da

Deve seguir os seguintes passos:

Colocar o arquivo displaytag.tld no diretório WEB-INF da aplicação displaytag.tld no diretório WEB-INF da aplicação

Colocar o displaytag.jar no WEB-INF/LIB displaytag.jar no WEB-INF/LIB

Adicionar no CLASSPATH da aplicação as seguintes bibliotecas usadas pela DisplayTag:da aplicação Colocar o displaytag.jar no WEB-INF/LIB commons-logging.jar commons-lang.jar (versão 2.0)

aplicação as seguintes bibliotecas usadas pela DisplayTag: commons-logging.jar commons-lang.jar (versão 2.0)

commons-logging.jar commons-lang.jar (versão 2.0) commons-collections.jar commons-beanutils.jar

log4j.jar

43
43
<display:table> <display:table> Gera um tabela html baseada em uma coleção de objetos Cada item é
<display:table> <display:table> Gera um tabela html baseada em uma coleção de objetos Cada item é

<display:table><display:table>

Gera um tabela html baseada em uma coleção de objetos

Cada item é formatado de acordo com a tag column aninhada dentro dela

é formatado de acordo com a tag column aninhada dentro dela java.util.List <display:table name = "
é formatado de acordo com a tag column aninhada dentro dela java.util.List <display:table name = "

java.util.List

<display:table name="listPessoas"> <display:column property="id" title="ID" /> <display:column property="name" /> <display:column property="email" /> <display:column property="status" /> <display:column property="description" title="Commentários"/>

</display:table>

44
44
Tags Tags table table e e column column <% List produtos = new ListaProdutos();

TagsTags tabletable ee columncolumn

<% List produtos = new ListaProdutos(); request.setAttribute("produtos", produtos); <display:table name="produtos"> <display:column property="nome" title="Nome"/> <display:column property="preco" title="Preço"/> </display:table>

%>

O valor mostrado será o resultado da propriedade (atributo property) ou de um decorator (se houver um).

Nome Preço

Feijão

2.5

 

Arroz

4.0

Farinha

3.5

Trigo

5.8

Açucar

1.5

45
45
setProperty setProperty Deve ser colocada dentro de uma tag table , serve para setar uma

setPropertysetProperty

Deve ser colocada dentro de uma tag table , serve table, serve

para setar uma determinada propriedade para a tabela

Como alternativa pode-se criar um arquivo de propriedades para toda a aplicação, serve para setar uma determinada propriedade para a tabela As propriedades e os valores possíveis

As propriedades e os valores possíveis estão emcriar um arquivo de propriedades para toda a aplicação http://displaytag.sourceforge.net/configuration.html Feijão

http://displaytag.sourceforge.net/configuration.html

Feijão

2.5

Arroz

4.0

Farinha 3.5

Trigo

Açúcar 1.5

5.8

< display:table name ="produtos"> < display:column property ="nome"/> <

<display:table name="produtos"> <display:column property="nome"/> <display:column property="preco"/>

< display:column property ="preco"/> < display: setProperty name
< display:column property ="preco"/> < display: setProperty name

<display:setProperty name="basic.show.header" value="false"/> </display:table>

< display: setProperty name ="basic.show.header" value ="false"/> </ display:table >
< display: setProperty name ="basic.show.header" value ="false"/> </ display:table >
< display: setProperty name ="basic.show.header" value ="false"/> </ display:table >
< display: setProperty name ="basic.show.header" value ="false"/> </ display:table >

indicamos que a tabela gerada não deve mostrar a linha de título, onde ficam os nomes das colunas

46
46
footer footer Também deve estar dentro da tag table , ela irá fornecer um rodapé

footerfooter

footer footer Também deve estar dentro da tag table , ela irá fornecer um rodapé customizado

Também deve estar dentro da tag table, ela irá fornecer um rodapé customizado para a tabela

<%

ListaProdutos produtos = new ListaProdutos(); request.setAttribute("produtos", produtos);

%> <display:table name="produtos"> <display:column property="nome" title="Nome"/> <display:column property="preco" title="Preço"/> <display:footer> <tr> <td>total:</td> <td><%= produtos.getTotal() %></td>

</tr>

</display:footer>

</display:table>

47
47
Criando Criando objeto objeto implícito implícito na na tabela tabela É possível criar um objeto
Criando Criando objeto objeto implícito implícito na na tabela tabela É possível criar um objeto

CriandoCriando objetoobjeto implícitoimplícito nana tabelatabela

É possível criar um objeto implicitamente na tabela ou no escopo da página usando o atributo 'id'

<display:table name="produtos" id="prod"> <display:column title="Produto" property="nome" /> <display:column title="Preço" property="preco" /> <display:column title="Desconto 10%"> ${prod.preco * 0.9}

 

</display:column>

</display:table>

Produto Preço

Desc. 10%

Feijão

2.5

2.25

 

Arroz

4.0

3.6

Farinha

3.5

3.15

Trigo

5.8

5.22

Açúcar

1.5

1.35

48
48
Links Links Dinâmicos Dinâmicos Para criar links dinâmicos podemos usar duas formas diferentes. Uma forma

LinksLinks DinâmicosDinâmicos

Para criar links dinâmicos podemos usar duas formas diferentes. Uma forma é definir as propriedades na tag column e a outra é usando o DecoratorLinks Links Dinâmicos Dinâmicos 1ª Forma: a tag column tem cinco atributos que podem ser setados

1ª Forma: a tag column tem cinco atributos que podem ser setados para criar o link dinâmico:propriedades na tag column e a outra é usando o Decorator href - a URL usada

href - a URL usada para construir o link - a URL usada para construir o link

paramID - o nome do parâmetro que será adicionado a URL - o nome do parâmetro que será adicionado a URL

paramName - nome do bean que contem o dado que será - nome do bean que contem o dado que será

colocado na URL

paramProperty - a propriedade chamada no objeto que - a propriedade chamada no objeto que

retornará o valor que ficará na URL

49
49
Links Links Dinâmicos Dinâmicos <display:table name="produtos"> <display:column property

LinksLinks DinâmicosDinâmicos

<display:table name="produtos"> <display:column property="id" href="details.jsp" paramId="id" paramProperty="id" /> <display:column property="nome" title="Produto" /> <display:column property="preco" title="Preço" /> </display:table>

50
50
Ordenação Ordenação 51

OrdenaçãoOrdenação

51
51
Usando Usando Decorator Decorator para para transformar transformar dados dados Um decorator é um design

UsandoUsando DecoratorDecorator parapara transformartransformar dadosdados

Um decorator é um design pattern onde um objeto fornece funcionalidades básicas encapsuladas para outros objetosDecorator para para transformar transformar dados dados Ajuda a formatar datas, valores monetários, números, etc

Ajuda a formatar datas, valores monetários, números, etc de acordo com a nossa necessidadeUm decorator é um design pattern onde um objeto fornece funcionalidades básicas encapsuladas para outros objetos

52
52
Usando Usando Decorator Decorator para para transformar transformar dados dados Para criar uma classe wrapper
Usando Usando Decorator Decorator para para transformar transformar dados dados Para criar uma classe wrapper

UsandoUsando DecoratorDecorator parapara transformartransformar dadosdados

Para criar uma classe wrapper que atue como um Decorator, 4 pontos devem ser observados:

O wrapper criado deve ser subclasse de TableDecoratorque atue como um Decorator, 4 pontos devem ser observados: Para aumentar a performance, deve-ser criar

Para aumentar a performance, deve-ser criar os formatters no método construtorO wrapper criado deve ser subclasse de TableDecorator Não é preciso fazer overload de todos os

Não é preciso fazer overload de todos os métodos no Decorator, somente daquele que serão formatados. o método getXXX do Decorator sempre será chamado getXXX do Decorator sempre será chamado

primeiro para uma property, mas se ele não existir, é chamado o método da classe de negócio

53
53
Usando Usando Decorator Decorator para para transformar transformar dados dados <display:table

UsandoUsando DecoratorDecorator parapara transformartransformar dadosdados

<display:table name="produtos"> <display:column property="id" href="details.jsp" paramId="id" paramProperty="id" /> <display:column property="nome" title="Produto" /> <display:column property="preco" title="Preço" /> <display:column property="dataValidade" title="Validade" decorator="util.decorator.FormatoDataMedium" /> </display:table>

public class FormatoDataMedium implements ColumnDecorator { public final String decorate(Object columnValue) { String retorno = " - "; Format formataData = DateFormat.getDateInstance( DateFormat.SHORT);

if(columnValue != null){ Date date = (Date) columnValue; retorno = formataData.format(date);

}

return retorno;

}}

54

!= null){ Date date = (Date) columnValue; retorno = formataData.format(date); } return retorno; }} 54
Bibliografia Bibliografia SCWCD Exam Study Kit – Java Web Component Developer Certification. Autores: Hanumant Deshmukh,

BibliografiaBibliografia

SCWCD Exam Study Kit – Java Web Component Developer Certification. Autores: Hanumant Deshmukh, Jignesh Malavia, Jacquelyn Carter, 2003Bibliografia Bibliografia Tag Libraries Tutorial. Sun Microsystems. Julho, 2000. 55

Tag Libraries Tutorial. Sun Microsystems. Julho, 2000.Kit – Java Web Component Developer Certification. Autores: Hanumant Deshmukh, Jignesh Malavia, Jacquelyn Carter, 2003 55

55
55