JSP - criar tags personalizadas
Tags JSP funciona como um plugin para suas páginas JSP. Estes são basicamente classes Java que são executadas quando a página jsp obter prestados pelo servidor e navegador. JSP vem com a Tag como construir jsp: include, jsp: forward, mas não são suficientes para atender à Internet. Para superar esse problema você pode criar etiquetas com base em sua exigência de negócio. Este artigo irá orientá-lo como podemos criar um custom tags para JSP.
Custom Tags JSP:
Todos JSP Custom Tags implementa Tag Interface. Para saber mais informações sobre o Tag Interface referir JSP Custom Tag Interface . Mas nós não utilizamos Tag Interface usaremos TagSupport e BodyTagSupport, é porque alguma implementação padrão do Tag interface já está implementada em TagSupport BodyTagSupport e assim fica mais fácil escrever código tag personalizado.
Diferença entre TagSupport e BodyTagSupport:
Em TagSupport que define todos os atributos necessários para exibir os dados no caso de, em BodyTagSupport passamos atributos e conteúdo do corpo da Tag JSP. BodyTagSupport não é usado com freqüência menos que você queira manipular o conteúdo do corpo. Passando atributos para as tags personalizados não é obrigatório.
Exemplo de TagSupport:
<test /> :showTime Exemplo de BodyTagSupport:
<test> :showTime Time atual: </ Teste>
Se você ver na BodyTagSupport passamos algum conteúdo do corpo da tag xml. Embora o conteúdo do corpo não é obrigatório, mas ele irá degradar o desempenho se você não está usando seu corpo para o tag personalizado e você não estiver usando TagSupport.
Importante chamada de função no Código Custom Tag JSP:
doStartTag ():
Esta função são chamados quando a tag jsp inicializados. Esta função de um valor inteiro que já está definido na Tag interface em forma de nome da variável. Nós normalmente SKIP_BODY retorno. SKIP_BODY informa o mecanismo de jsp para ignorar o corpo da tag jsp.
doEndTag ():
Esta função são chamados logo após doStartTag () função de transformação é feito. Semelhante ao doStartTag () esta função também retorna um valor inteiro. Normalmente, voltamos EVAL_BODY. EVAL_BODY informa o mecanismo de jsp para processar o código jsp restantes.
Simples Código Tag personalizado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ; com.hiteshagrawal pacote; ; import java.io. *; ; javax.servlet.jsp importação .*; ; javax.servlet.jsp.tagext.TagSupport de importação; TagSupport { public class Test (estende TagSupport doStartTag ( ) throws JspException { público doStartTag (int) (throws JspException try ( ( ) ; JspWriter out = pageContext. GetOut (); "This is my first tag!" ) ; para fora. print ("Este é o meu primeiro tag!"); ( IOException ioe ) { ) Catch (IOException OIE) ( ; OIE. printStackTrace (); "IOException while writing data to page" + ioe. getMessage ( ) ) ; throw JspException novo ("IOException durante a gravação de dados para a página" + OIE. getMessage ()); ) retorno SKIP_BODY; ) doEndTag ( ) throws JspException { público doEndTag (int) (throws JspException EVAL_PAGE retorno; ) ) |
Explicação Code:
- Classe estende TagSupport indicando que não estamos usando a classe BodyTagSupport.
- doStartTag () função grava um conteúdo String usando pageContext.getOut (), é esse o resultado que vai ficar escrito na página jsp.
- doStartTag () retorna Função SKIP_BODY. O valor para essa variável já está definida no Tag Interface.
- doEndTag () Função EVAL_PAGE retorna. O valor para essa variável já está definida no Tag Interface.
Execução de código Java JSP Tag em JSP:
Agora nosso próximo passo seria criar um Tag Library Descriptor (TLD) do arquivo. Esse arquivo informa o motor JSP sobre a Custom Tag JSP que vai se acostumar dentro do código JSP.
= "ISO-8859-1" ?> <? Xml version = "1.0" encoding = "ISO-8859-1"?> <! DOCTYPE taglib PUBLIC "- / / Sun Microsystems, Inc. / / DTD JSP Tag Library 1.2 / / EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> > <taglib 1.0 </tlib > -version <tlib> 1,0 </> tlib 1.2 </jsp > -version <jsp> 1,2 <> JSP / test </short > <short -name teste </> curto <tag> <nome> TestingTag </ name> <tagclass> com.hiteshagrawal.Test <tagclass> / > <bodycontent Vazio </> bodycontent </ Tag> </> Taglib
Se você ver que eu tiver definido um arquivo TLD para o código JSP acima escrito. Seu JSP Custom Tag deve ser escrito dentro de "tag" elemento. Permitam-me que a escrita explaing arquivo xml:
- tlib-version - Como o nome sugere refere-se à Biblioteca Tag Version
- Versão jsp - Refere-se a versão que você está usando JSP
- Nome de curta duração - Refere-se o nome do Custom JSP Tag que seu código jsp vai estar se referindo a
- nome - Refere-se ao nome do Custom Tags
- tagclass - Refersn a estrutura de classes utilizadas para o seu JSP Tags
- bodycontent - Este é utilizada no caso estamos usando BodyTagSupport, em TagSupport mantivermos esse vazio
Salve este arquivo TLD pelo nome test.tld dentro da pasta WEB-INF.
Referência TLD arquivo em página JSP:
Existem várias maneiras de refererence TLD arquivo em JSP e estou discutindo um deles neste artigo.
Aplicação JSP JSP Custom Tags:
"test" uri = "/WEB-INF/test.tld" %> < html > < head > < title > JSP Custom Tag Demo </ title > </ head > < body > < test : TestingTag /> </ body > </ html > <% @ Taglib prefix = "teste" uri = "/ WEB-INF/test.tld"%> <html> <head> <título> JSP Custom Tag Demo </ title> </ head body> <> teste: < TestingTag /> </ body> </ html>
Explicação JSP Code:
Se você ver que eu estou fazendo referência a taglib que será chamado pelo nome de "teste". Também estou passando o caminho do arquivo TLD estará se referindo.
Finalmente eu estou chamando a etiqueta personalizada, como mostrado na linha n º: 7
Saída JSP:
Quando executado o código JSP acima obtemos o seguinte resultado.
Esta é a minha marca em primeiro lugar! 



































Na verdade, a maneira mais fácil implementá-las é o uso de arquivos tag. IWebMvc faz uso pesado de tags, ambos criados a partir de arquivos e / ou classes. Dê uma olhada se interessado em um mundo "real" exemplos.
Veja também Coldtags suite: http://www.servletsuite.com/jsp.htm
É um maior conjunto de tags JSP personalizadas pela Internet.
Bom tutorial.
Nice tutorial, fácil de entender. Obrigado para o mesmo.