corpo
A tag personalizado mais básico, chamado de tag simples , não tem corpo e não requer atributos. A marca personalizada contendo um corpo é chamado de tag corpo. Etiquetas personalizadas podem ser aninhados. Os valores dos atributos podem ser definidas usando expressões JSP. Existem dois componentes básicos que você constrói para criar uma marca personalizada : o arquivo de descritor de bibliotecas de tags eo manipulador de marcas de classe Java. Esses componentes são registrados com o servlet container no arquivo web.xml do aplicativo.
Crie o Tag Library Descriptor Arquivo
O Tag Library descritor de arquivo (TLD ) é uma arquivo XML contendo metadados que definem suas tags personalizados . Por exemplo, o seguinte arquivo TLD define uma tag simples chamado " myTag " com um atributo, " maxValue ", e nenhum corpo . O atributo maxValue é necessária, eo valor pode ser definido usando uma expressão de tempo de execução ( definida pelo elemento rtexprvalue ) , que deve retornar um inteiro.
< ? Xml version = "1.0" encoding = " ISO- " ! > < DOCTYPE taglib PUBLIC" 8859-1 - //Sun Microsystems, Inc. //DTD JSP TagLibrary 1.2 //EN " etiqueta tag com um
criar o manipulador de Tag
Cada tag personalizado tem um manipulador de tag que define e obtém seus atributos , os processos do corpo, e implementa a ação. Um manipulador de tag é uma classe Java que implementa javax.servlet.jsp.tagext.Tag ou, melhor ainda , estende-se uma subclasse de Tag . Manipulador classes Tag têm acesso aos mesmos objetos implícitos como páginas JSP , como pedido , resposta e sessão.
Criar um simples manipulador de classe tag estendendo javax.servlet.jsp.tagext.TagSupport . Implementar o doStartTag , doEndTag , e os métodos de lançamento. O doStartTag é executado quando a marca de início é encontrado, e executa a ação principal da marca , como a realização de cálculos e imprimir os resultados.
Public int doStartTag () lança JspException {try {... seu código ...} catch (Exception ex) { ... tratamento de erro ...} retornar SKIP_BODY ;}
O método doEndTag é executado quando o tag final é encontrado. Retornar EVAL_PAGE se o resto da página JSP deve ser avaliada. O método de liberação deve limpar e liberar todos os recursos usados pela classe tag handler .
Se a sua marca personalizada tem atributos , incluir uma variável de membro e implementar métodos set e get para cada atributo. Se o atributo não é necessário, definir um valor padrão . Para o atributo maxValue necessário :
private int maxValue ;
setMaxValue public void (int val) { maxValue = val ;} public int getMaxValue () {return maxValue ;}
corpo manipuladores de marca que não interagem com o conteúdo do corpo da tag estender javax.servlet.jsp.tagext.TagSupport . Implementar os mesmos métodos que para uma marca simples. Também implementar o método doAfterBody para analisar e usar o conteúdo do corpo . Para manipuladores de marca do corpo que precisam de interagir com o conteúdo do corpo da tag, estender javax.servlet.jsp.tagext.BodyTagSupport e ambos os métodos doInitBody e doAfterBody .
Atualização web.xml
< br >
Depois de ter criado o arquivo TLD e classe tag handler , edite o arquivo web.xml para registrar sua nova biblioteca de tag com o servlet container . Adicione uma seção taglib no final antes da tag final
usar suas tags personalizados
No arquivo JSP que irá utilizar suas tags personalizados , use a diretiva taglib para indicar a biblioteca de tags que você vai usar eo prefixo que você vai usar para referir-se à sua biblioteca. Você pode referir-se a sua uri biblioteca usando o caminho :
< % @ taglib uri = "/WEB-INF/exampletaglib.tld " prefix = " por exemplo, "% >
ou o nome fornecido no web.xml como o taglib -uri :
< % @ taglib uri = " minhasmarcas " prefix = " por exemplo, "% >
Use seu tag personalizado em seu JSP onde deseja que a ação aconteça, usando o prefixo que você forneceu para a diretiva taglib :