Академический Документы
Профессиональный Документы
Культура Документы
e DisplayTag
Fornece tags para encapsular funcionalidades
complexas para utilizao em JSPs
Caractersticas
Pode ser parametrizada com a utilizao de
atributos
Pode acessar todos os objetos disponveis em uma
pgina JSP
Pode modificar a resposta da pgina que a chamou
Voc pode criar e iniciar componentes JavaBeans
Tipos de Tag
So expressas utilizando sintaxe XML
<tlt:tag>
body
</tlt:tag>
JSTL
(JSP Standard Tag Libraries)
Linguagem de Expresso
Permite embutir em atributos expresses dentro de
delimitadores ${...} facilitando o acesso a
atributos, propriedades e mtodos. Exemplos
<%=((Usuario)request.getAttribute("usuario")).
getGrupo().getNome()%>
Corresponde a: ${usuario.grupo.nome}
<jsp:getProperty name=usuario property=nome />
Corresponde a: ${usuario.nome}
10
Resoluo de Identificadores
A EL transforma identificadores em objetos fazendo
uma chamada ao mtodo
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 no seja encontrado
11
12
14
15
Operadores
A EL fornece operadores aritmticos, lgicos e relacionais
Aritmticos: +, -, *, / (div), % (mod)
Lgicos: && (and), ||(or), !(not), empty
Relacionais: == (eq), != (ne), < (lt), > (gt) <= (le),
>= (ge)
Exemplos: ${10 % 3} produz 1
${-produto.preco} resultado -50
OBS: operador empty determina se um valor nulo ou vazio.
A operao empty obj retorne true caso obj seja null
Tambm retorna true para: uma string vazia, um array vazio, ou
um objeto que implemete Map ou List e esteja vazio
16
JSTL
JSP Standard Tag Library
17
JSTL
uma especificao do JCP (JSR-52) e faz parte do
JSP 2.0 e do J2EE 1.4
composta de quatro taglibs (Core, Format, XML e
SQL)
Suporta linguagem de expresso (EL)
Oferece mais controle ao autor de pginas sem
necessariamente aumentar a complexidade
Estimula a separao da apresentao e lgica
Estimula o investimento em solues MVC
18
Histrico
Julho/2001 - Criado o projeto (JSR-052)
Junho/2002 lanado o JSTL 1.0 baseado no JSP 1.2
(Tomcat4 e maioria dos servidores corporativos)
Janeiro/2004 - lanado o JSTL 1.1 baseado no JSP
2.0 (Tomcat 5)
Julho/2004 - lanado o JSTL 1.1.1
19
JSTL
Core (ncleo): Contm tags usadas para controle de
fluxo e sada de mensagens
XML: Tags utilitrias para o processamento de XML
Format (Internacionalizao): usadas para
formatao de texto, valores monetrios e nmeros
com base em uma determinada localizao
SQL: fornece tags para acesso a banco de maneira
simplificada sem a necessidade de cdigo Java
20
JSTL - Core
<c:out>: avalia uma expresso e exibe o resultado na
pgina
<c:out value="${usuario.nome}">
Usurio Annimo
</c:out>
equivalente a:
<c:out value="${usuario.nome}"
default="Usurio Annimo />
<c:out value= escapeXml=false>
Usuario <i>annimo</i>.
</c:out>
Atributo opcional, indica se caracteres
especiais (<, &, ...) devem ser convertidos
para entidades XML equivalentes (<,
&, ...). Default true
21
JSTL - Core
<c:set>: define o valor de uma varivel de escopo
Valor default
<c:set var="usuario" scope="page"
value="${sessionScope.usuarioLogado}"/>
ou uma propriedade
<c:set target="${usuario}"
property="nome" value="Maria" />
property e value correspondem a
nome/valor da propriedade
22
JSTL - Core
Exemplos:
<c:set var="nome" value="Maria"/>
Varivel nome: <c:out value="${nome}"/>
<c:set target="${usuario}" property="nome"
value="${nome}"/>
Propriedade nome do objeto usurio:
<c:out value="${usuario.nome}"/>
23
JSTL - Core
<c:remove>: remove uma varivel de escopo
No possui corpo
Atributos
var varivel a ser removida
scope escopo (opcional) da varivel
<c:remove var="usuario"/>
Antes da remoo: <c:out value="${usuario}"/>
<c:remove var="usuario"/>
<c:out value="${usuario}" escapeXml="false">
Varivel <i>usuario</i> foi removida do escopo!
</c:out>
24
JSTL - Core
<c:catch>: captura uma exceo 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
JSTL - Core
<c:if>: executa o corpo da tag apenas se uma
expresso for verdadeira
<c:if test="${empty sessionScope.usuarioLogado}">
<c:redirect url="login.jsp"/>
</c:if>
26
JSTL - Core
<c:chose>: executa uma tag quando a expresso da
subtag for verdadeira
<c:choose>
<c:when test="${empty usuario.username}">
<b>Campo login obrigatrio!<br>
</c:when>
<c:when test="${empty usuario.senha}">
<b>Campo senha obrigatrio!<br>
</c:when>
<c:when test="${usuario.senha ne usuario.username}">
<b>Senha invlida!<br>
</c:when>
<c:otherwise>
<c:set var="usuarioLogado" scope="session"
value="${usuario}"/>
<c:redirect url="index.jsp"/>
</c:otherwise>
</c:choose>
27
JSTL - Core
forEach - usada para percorrer uma coleo de
objetos ou uma faixa de valores
<c:forEach var="item" items="${colecao}">
...
<c:out value="${item}" />
</c:forEach>
JSTL - Core
c:param serve para passar nome e o valor de um
parmetro. uma sub-tag das demais tags de
manipulao de URL (<c:url>, <c:import> e
<c:redirect>)
Atributos
name nome do parmetro
value valor de parmetro (pode ser o corpo da tag)
29
JSTL - Core
c:url cria uma string contendo uma URL
c:import importa o contedo de uma URL
c:redirect redireciona o cliente da aplicao
para uma outra URL
30
Exemplo:
<c:import
url=http://www.teste.com/topo.htm />
31
JSTL Format
Fornece suporte:
internacionalizao (i18n, internationalization i +
18 letras + n)
Fornece tags para internacionalizao de mensagens
atravs de resource bundles
Formatao
Formata nmeros, datas e horas de acordo com a
localizao (i10n localization) do usurio
32
34
JSTL Format
<fmt:parseNumber>
36
JSTL Format
<fmt:formatDate>
37
JSTL Format
<fmt:formatDate>
38
JSTL Format
<fmt:parseDate>
39
JSTL Format
<fmt:parseDate>
40
Exemplo
<%@ 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);
%>
<display:table name="teste" />
Sada
Teste String 1
Teste String 2
Teste String 3
Teste String 4
42
Instalao
Deve seguir os seguintes passos:
Colocar o arquivo displaytag.tld no diretrio
WEB-INF da aplicao
Colocar o displaytag.jar no WEB-INF/LIB
Adicionar no CLASSPATH da aplicao as seguintes
bibliotecas usadas pela DisplayTag:
commons-logging.jar
commons-lang.jar (verso 2.0)
commons-collections.jar
commons-beanutils.jar
log4j.jar
43
<display:table>
Gera um tabela html baseada em uma coleo de objetos
Cada item formatado de acordo com a tag column
aninhada dentro dela
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="Commentrios"/>
</display:table>
44
Nome Preo
Feijo 2.5
Arroz 4.0
Farinha 3.5
Trigo
5.8
Aucar 1.5
45
setProperty
Deve ser colocada dentro de uma tag table, serve
para setar uma determinada propriedade para a
tabela
Como alternativa pode-se criar um arquivo de
propriedades para toda a aplicao
Feijo 2.5
Arroz 4.0
Farinha 3.5
Trigo 5.8
Acar 1.5
46
footer
Tambm 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="Preo"/>
<display:footer>
<tr> <td>total:</td>
<td><%= produtos.getTotal() %></td>
</tr>
</display:footer>
</display:table>
47
Feijo
Arroz
Farinha
Trigo
Acar
2.5
4.0
3.5
5.8
1.5
2.25
3.6
3.15
5.22
1.35
48
Links Dinmicos
Para criar links dinmicos podemos usar duas formas
diferentes. Uma forma definir as propriedades na tag column
e a outra usando o Decorator
1 Forma: a tag column tem cinco atributos que podem ser
setados para criar o link dinmico:
href - a URL usada para construir o link
paramID - o nome do parmetro que ser adicionado a URL
paramName - nome do bean que contem o dado que ser
colocado na URL
paramProperty - a propriedade chamada no objeto que
retornar o valor que ficar na URL
49
Links Dinmicos
<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="Preo" />
</display:table>
50
Ordenao
51
52
53
54
Bibliografia
SCWCD Exam Study Kit Java Web Component Developer
Certification. Autores: Hanumant Deshmukh, Jignesh Malavia,
Jacquelyn Carter, 2003
Tag Libraries Tutorial. Sun Microsystems. Julho, 2000.
55