2010-02-02 14 views
7

Tengo un proyecto Java ejecutándose en Glassfish que muestra un feo aspecto HTML. Es un efecto secundario debido al uso de varias bibliotecas JSP internas y externas. Me gustaría configurar algún tipo de filtro post-render que alimente el HTML final a través de HTMLTidy para que la fuente sea buena y ordenada para ayudar a la eliminación de fallas. es posible?Feed prestados páginas jsp a través de htmltidy

¿Hay algún mecanismo incorporado para realizar alguna acción después de que el servidor representa las JSP en HTML? ¿Puede esa acción obtener el HTML generado como una cadena y manipularlo? ¿Hay alguna opción incorporada fácil para hacer esto sin codificación adicional?

Respuesta

5
+0

muy fresco. ¡¡¡Gracias por la respuesta!!! – Freiheit

+1

También me gustaría señalar que JTidyFilter aún es un poco difícil sin una versión formal. Debes descargarlo desde JTidy nightlies en: http://jtidy.sourceforge.net/nightly/ – Freiheit

0

Si puede alterar el flujo de control de manera que se obtiene la salida html antes de que sea devuelta al navegador, entonces jtidy puede ayudarle.

Sin embargo, esta sería una de las peores soluciones. A largo plazo, lo que debería ayudar más es separar el código de generación html y refactorizar eso. Incluso en proyectos grandes y complejos, debes poder hacer esto en pequeños pedazos y obtendrás una mejora gradual. De lo contrario, si tus problemas crecen hasta el punto en que la limpieza no puede ayudar, volverás al lugar donde comenzaste (y con un código aún más difícil de manejar).

3

Este comportamiento también se puede eliminar en cierta medida configurando la propiedad JSP 2.1 trimDirectiveWhitespaces en true. Esto se puede activar en archivos individuales JSP por:

<%@page trimDirectiveWhitespaces="true" %> 

O en todos archivos JSP por la siguiente entrada en web.xml (que debe ser declarada Servlet 2.5!):

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

En el pre -JSP contenedores 2.1 o en contenedores JSP 2.1 que en realidad no es compatible con esto por algunas razones internas, como Tomcat, debe consultar su documentación JspServlet para cualquier parámetro de inicialización. Por ejemplo, en Tomcat, se puede configurar, así estableciendo la trimSpaces init-param de JspServlet a true en /conf/web.xml de Tomcat:

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

anotados deben ser que los enfoques tanto en realidad no el código HTML "reformatear" . En realidad solo recorta el espacio en blanco que queda en taglibs y scriptlets. También vea this Sun article. Así por ejemplo el siguiente ..

<ul> 
    <c:forEach items="${list}" var="item"> 
     <li>${item}</li> 
    </c:forEach> 
</ul> 

..would básicamente terminan en

<ul> 
     <li>item1</li> 
     <li>item2</li> 
     <li>item3</li> 
</ul> 

Así, con doble muesca. En realidad se puede solucionar este reformateando el código como tal que las etiquetas JSP son la mitad sangría:

<ul> 
    <c:forEach items="${list}" var="item"> 
    <li>${item}</li> 
    </c:forEach> 
</ul> 

pero creo que la JTidyFilter es más fácil aquí :)

Cuestiones relacionadas