Modificar el cuerpo de un tag
Artículo por Club Developers · 20 junio 2006
2123 vistas
Podemos modificar el cuerpo del Tag antes de escribirlo en la página JSP.
Por ejemplo, vamos ha hacer un Tag para impedir que una parte del código HTML sea interpretada por el navegador (es decir, reemplazaremos los carácteres < y > por < y >...).
Vamos a usar para ello la lectura de buffer de la interfaz BodyTag heredando de su implementación BodyTagsupport:
En el TLD:
Explicación:
El método doStartTag() devuelve BodyTag.EVAL_BODY_TAG para usar la "evaluación bufferizada" del cuerpo del Tag. En el método doAfterBody(), recuperamos el cuerpo del tagde tipo String. Ahora modificamos el String para reemplazar los carácteres "<", ">", "\t" y "\n" por código HTML. Luego mostramos la cadena transformada...
Nota: con JSP 1.2, BodyTag.EVAL_BODY_TAG está deprecated y se reemplaza por BodyTag.EVAL_BODY_BUFFERED.
Se usa asÃ:
Obteniendo:
Por ejemplo, vamos ha hacer un Tag para impedir que una parte del código HTML sea interpretada por el navegador (es decir, reemplazaremos los carácteres < y > por < y >...).
Vamos a usar para ello la lectura de buffer de la interfaz BodyTag heredando de su implementación BodyTagsupport:
java
public class HtmlCodeTag extends BodyTagSupport { Â public int doStartTag() throws JspException { Â Â Â return BodyTag.EVAL_BODY_TAG; Â } Â public int doAfterBody() throws JspException { Â Â Â try { Â Â Â Â Â bodyString = bodyString.replaceAll("<", "<"); Â Â Â Â Â bodyString = bodyString.replaceAll(">", ">"); Â Â Â Â Â bodyString = bodyString.replaceAll("\t", " "); Â Â Â Â Â bodyString = bodyString.replaceAll("\n", "\n"); Â Â Â Â Â getPreviousOut().println(bodyString); Â Â Â Â Â throw new JspException (e); Â Â Â } Â Â return SKIP_BODY; Â } }
En el TLD:
xml
<tag> Â <name>htmlCode</name> Â <tagclass>HtmlCodeTag</tagclass> </tag>
Explicación:
El método doStartTag() devuelve BodyTag.EVAL_BODY_TAG para usar la "evaluación bufferizada" del cuerpo del Tag. En el método doAfterBody(), recuperamos el cuerpo del tagde tipo String. Ahora modificamos el String para reemplazar los carácteres "<", ">", "\t" y "\n" por código HTML. Luego mostramos la cadena transformada...
Nota: con JSP 1.2, BodyTag.EVAL_BODY_TAG está deprecated y se reemplaza por BodyTag.EVAL_BODY_BUFFERED.
Se usa asÃ:
html4strict
Obteniendo:
html4strict