2011-08-10 17 views
10

¿Es posible hacer que la salida generada por mis propias etiquetas JSP sea más corta? Por ejemplo, la etiqueta definida a continuación genera 5 líneas en lugar de 1. ¿Es posible evitar eso (sin unir las 5 líneas en 1 en la fuente de la etiqueta)?¿Cómo acortar la salida generada por la etiqueta JSP personalizada?

<%@ tag description="link" pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ attribute name="href" required="true" type="java.lang.String" %> 
<%@ attribute name="label" required="false" type="java.lang.String" %> 
<a href="<c:url value="${href}"/>">${not empty label ? label : href}</a> 

no una solución:

<%@ tag description="standard input" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ attribute name="href" required="true" type="java.lang.String" description="address relative to web-app context" %><%@ attribute name="label" required="false" type="java.lang.String" description="link label" %><a href="<c:url value="${href}"/>">${not empty label ? label : href}</a> 
+0

Esto no es una víctima exacta de la otra pregunta: ¿cómo se puede ajustar la salida de los espacios en blanco por una etiqueta personalizada sin simplemente eliminando todos los espacios en blanco dentro de la etiqueta? No puede usar <% @ page trimDirectiveWhitespaces = "true"%> dentro de una etiqueta. – werkshy

+2

La respuesta correcta es que se puede agregar esto en la etiqueta: '<% @ tag trimDirectiveWhitespaces =" true "%>' – werkshy

+0

debe volverse a abrir porque la respuesta correcta (ver comentarios) es diferente de la pregunta original. –

Respuesta

7

sí, se puede configurar el analizador a nivel mundial JSP para recortar espacios en blanco que se dejan por las expresiones de secuencia de comandos y etiquetas.

Agregue esto a su webapp web.xml (que tiene que ser Servlet 2.5 compatible!):

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <trim-directive-whitespaces>true</trim-directive-whitespaces> 
    </jsp-property-group> 
</jsp-config> 

Si se dirige a un Servlet 2.4 contenedor o inferior, entonces usted tiene que editar la propia web.xml contenedor en lugar de aplicar esta globalmente En Tomcat, por ejemplo, es el archivo /conf/web.xml. Busque la declaración <servlet> del JspServlet y agregue el siguiente parámetro init de servlet dentro de la declaración <servlet>.

<init-param> 
    <param-name>trimSpaces</param-name> 
    <param-value>true</param-value> 
</init-param> 
+0

Debe negrita ** Compatible con Servlet 2.5 ** – Vlad

+1

@Vlad: Bueno, hace 5 años que haría. Pero hoy en día, Servlet 2.5 ya ha salido durante 5 años ... esperaría que todos lo usen ya;) Creo que ese signo de admiración es suficiente. – BalusC

+2

'' funciona solo para páginas .jsp (lo mismo que '<% @ page trimDirectiveWhitespaces =" true "%>'), pero no funciona para mi propia salida generada por etiquetas. Solo 'trimSpaces' como init param funciona y obtiene una salida de 1 línea de mi etiqueta. – marioosh

3

En su JSP:

<%@ page trimDirectiveWhitespaces="true" %> 
+0

Estoy usando Tomcat 7.0.19 (Servlet 3.0, JSP 2.2) y '<% @ page trimDirectiveWhitespaces =" true "%>' funciona en la página jsp, pero no en la fuente de la etiqueta ('link.tag' en mi ejemplo) . Usar esa directiva en la página donde se usa mi propia etiqueta no reduce la producción de la etiqueta. – marioosh

+0

@marioosh bien, entonces tal vez debería recortar() la salida de su etiqueta –

+0

¿Cómo hacer eso con una etiqueta como en mi pregunta? – marioosh

15

Como ya se ha señalado por werkshy, para evitar ser un espacio en blanco generado por las directivas utilizadas en una etiqueta personalizada JSP,

<%@ tag trimDirectiveWhitespaces="true" %> 

se puede utilizar (<% @ page trimDirectiveWhitespaces = "true"%> no ayuda en este caso, ya que solo parece aplicarse a directivas en el JSP mismo y no en las etiquetas personalizadas utilizadas por la página).

Sin embargo, para permitir este atributo de etiqueta, es posible que deba especificarse la versión 2.1 de JSP, p. utilizando un implicit.tld (como se describe en https://docs.oracle.com/javaee/5/tutorial/doc/bnamu.html o https://forums.oracle.com/thread/742224) que luego debe colocarse en el directorio con las etiquetas. (Por lo menos que tenía que hacer eso para WebLogic 12c.)

implicit.tld:

<?xml version="1.0" encoding="UTF-8"?> 
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"> 
    <tlib-version>1.0</tlib-version> 
    <short-name>implicit</short-name> 
</taglib> 
Cuestiones relacionadas