CodeTags

Descripción

Una biblioteca de etiquetas proporciona a los desarrolladores la posibilidad de escribir código BBj para procesar las etiquetas que se encuentran en las páginas BBJSP. Estas etiquetas no se basan en el marcado de BBJSP sino que son clases de BBj puras que se ejecutan cuando se invocan en una página.

Una biblioteca de etiquetas permite a un desarrollador agrupar etiquetas con funcionalidad relacionada. Una biblioteca de etiquetas utiliza un archivo descriptor de biblioteca de etiquetas (TLD) que describe las extensiones de etiqueta y las relaciona con sus clases. BBJSP utiliza el TLD para obtener información sobre las extensiones. Los archivos TLD tienen la extensión de archivo .tld y están escritos en notación XML.

Identifica el TLD en tus páginas BBJSP

Para usar una biblioteca de etiquetas en una página o una etiqueta personalizada, primero debes importar el taglib en la página con la etiqueta taglib de la siguiente manera:

<%@ taglib file='/WEB-CFG/tld/mytags.tld' prefix='mytag' %>

Hecho esto, ahora puedes acceder a las clases de etiquetas que definiste, en tu página de la siguiente manera:

<prefix:tagname' attribute='value' ... !>

Donde prefix fue especificado en la etiqueta taglib y tagname es el mismo de la etiqueta definida en el archivo TLD. Se pueden agregar múltiples pares de atributo='valor' dependiendo de la declaración en el TLD.

Los atributos opcionales se definen en la página que llama, con sus valores. Los valores se enviarán a la etiqueta para su procesamiento. Estos valores de atributo pueden ser datos válidos de BBJSP, incluyendo BBjVector de registros o beans.

Este es un ejemplo más real de cómo se puede usar una etiqueta:

<% declare BBjVector products! categoryId$=#getRequest().getParameter("category_id") products! = ProductLoader.loadProductsInCategory(categoryId$) layout$="list" %> <c:iterate data='<%= products! >' class='ProductBean' id='product!' > <s:productTag product='product!' layout='layout$'/> </c:iterate>

Descriptor de Tag Library

<taglib> <tag> <name>code</name> <source>mytags/CodeTag.bbj</source> <class>CodeTag</class> <attribute> <name>myAttributes</name> <required>true</required> <type>BBjString</type> </attribute> <attribute> <name>dataVector</name> <required>true</required> <type>BBjVector</type> </attribute> </tag> </taglib>

Una vez definido, el motor BBJSP genera automáticamente el código BBj necesario para interactuar con la clase etiqueta en tiempo de ejecución.

Ejemplo de Tag Personalizado

Supongamos que queremos mostrar un número con formato con comas y espacios. Esto puede ser muy útil para el usuario cuando el número es muy largo. Así que queremos alguna etiqueta personalizada como la siguiente:

<mytags:formatNumber number="100050.574" format="#,###.00"/>

Crea el archivo de la claseBBj

Basado en el número y el formato pasado, debería escribir el número con formato en la página; para este ejemplo debería imprimir 100,050.57

class public NumberFormatterTag implements SimpleTag field public BBjString format field public BBjString number field public BBjspPageContext PageContext! method public int doStartTag() return SimpleTag.EVAL_BODY methodend method public void doBodyTag() double amount = Double.parseDouble(number) DecimalFormat formatter = new DecimalFormat(format) String formattedNumber = formatter.format(amount) #PageContext().write(formattedNumber) error: System.err.println(e.getMessage()) methodend method public void doAfterBody() methodend method public void doEndTag() methodend classend

Crea la entrada del descriptor del Tag (TLD)

Una vez que la clase controlador de etiquetas está lista, necesitamos definir un archivo TLD dentro del directorio WEB-CFG para que el generador de páginas sepa cómo cargarlo.

<tag> <name>formatNumber</name> <source>NumberFormatterTag.bbj</source> <class>NumberFormatterTag</class> <content>empty</content> <attribute> <name>format</name> <required>true</required> </attribute> <attribute> <name>number</name> <required>true</required> </attribute> </tag>

Usa el tag en la página

Ahora se puede usar la etiqueta insertándola en tu página de la siguiente manera:

<mytags:formatNumber number="${customerAccount['Balance']}" format="$#,###.00"/>

Comentarios

Ninguno.

Revisa También

BBJSP

CoreTags

TagLibraries

SimpleTags