2010-01-06 18 views
7

Soy nuevo en JSP, y estoy tratando de reducir una gran cantidad de código de corte y pegado.
En cada página del proyecto, hay alrededor de 25 líneas de JSP mixto, etiquetas Struts, etiquetas JSTL y HTML, que se han cortado y pegado en varios puntos de la página. Estas ~ 25 líneas de código reutilizado son ni siquiera remotamente similares de página a página (y hay ~ 250 páginas), pero exactamente iguales en cada página. En última instancia, este código (de lógica comercial) debería eliminarse de la Vista, pero hacerlo sería un proyecto más grande de lo que mi calendario permite en este momento, por lo que me pregunto si existe una forma simple de reutilizar Mixed Tags + JSP dentro de una página, como una solución temporal para que el código se pueda refactorizar en etapas según lo permita el tiempo.¿Cómo puedo reutilizar HTML/JSP dentro de una página?

Para mayor claridad, estoy buscando un camino para encapsular el código sin crear un nuevo archivo (/ local al alcance de la página) - es decir, debe definirse en la misma página desde la que se llama.

Algunos han sugerido que esto se puede hacer con Tiles - si ese es el caso, muéstrenme cómo.

Respuesta

2

puede crear un archivo de inclusión y jsp: inclúyalo donde sea necesario. las partes variables se pueden hacer con condicionales jsp, atributos EL jstl o puntales EL.

No necesariamente quiero volver a codificar páginas existentes porque ya están funcionando.

+0

Gracias por la sugerencia. He utilizado ese enfoque como una solución temporal anteriormente, pero lamentablemente en este caso aumentaría significativamente el número de páginas jsp en el proyecto o crearía un enredo de condicionales. El problema es que las páginas no funcionan realmente. Me encargaron que el sitio sea compatible con navegadores cruzados. Estoy tratando de reducir el tiempo de depuración reduciendo el código de copiado al tiempo que reescribo solo lo que debe reescribirse por el momento. –

7

Eche un vistazo a Apache tiles. Como estás trabajando con Struts, me sorprende que aún no lo hayas encontrado. Básicamente es un motor de plantillas y creo que se ajusta a sus requisitos.

La ya sugerida <jsp:include> puede usarse con <jsp:param> para pasar variables. Al igual que

<jsp:include file="includedFile.jsp"> 
    <jsp:param name="username" value="jsmith" /> 
</jsp:include> 

En realidad, aunque sólo querer incluir 1 archivo con el código común, me gustaría recomendar la simplicidad de <jsp:include> sobre el poder de los Azulejos.

+0

En realidad, comencé a usar mosaicos para limpiar parte del código hace algunas semanas, aunque no estoy tan familiarizado con él como debería. ¿Es posible crear un mosaico e insertarlo dentro del mismo archivo? Como el código no es estructural ni lógicamente similar entre los archivos, espero algo que no requiera crear archivos separados para la encapsulación, por lo que puedo refactorizar en etapas. –

1

Struts Los tiles son los mejores para ser utilizados en Struts para plantillas de una página en particular, de modo que la parte que es común a todas las páginas no necesita ser codificada cada vez. Consultar http://struts.apache.org/1.x/struts-tiles/.

Un enfoque más simple muy específico para JSP es jsp: incluir como se discutió anteriormente.

Sólo por la información hay un tercer enfoque, que es el enfoque de la directiva include

Diferencia entre jsp: include y directiva include es el siguiente

Uno debe usar la directiva include (< @ incluir URLrelativa archivo >) solo si 1) si el archivo incluye texto estático 2) si el archivo rara vez se modifica (el motor JSP puede no recompilar el JSP si se modifica este tipo de archivo incluido) 3) si tiene un fragmento de código común que puede reutilizar en varias páginas (p. ej.encabezados y pies de página)

uno debe utilizar el jsp: include sólo si 1) El contenido de la página JSP incluido es dinámica y puede cambiar en tiempo de ejecución 2) para seleccionar el contenido que debe render en tiempo de ejecución (debido a que la página y src los atributos pueden tomar expresiones de tiempo de ejecución)

Espero que esto te ayude a decidir.

Cuestiones relacionadas