2010-01-20 8 views
5

Estoy pidiendo algunas opiniones sobre cómo hacer referencia al código Java (en mi caso, un valor enum) en un JSP.Práctica recomendada para hacer referencia a Java dentro de mis JSP

actualmente tienen lógica condicional en mi JSP como:

<c:if test="${actionBean.order.status eq 'complete'}">  
    show some stuff 
</c:if> 

Ahora, 'completo' es un valor asociado con una enumeración en mi base de código. ¿Sería mejor hacer referencia a la enumeración dentro de mi JSP? ¿Si es así, cómo?

Creo que podría ser algo bueno porque: Si la enumeración cambia, entonces el JSP no se rompe.

¿Es una mala práctica mezclar código Java en los JSP? ¿O es peor duplicar el valor de 'completo'?

Gracias de antemano.

Respuesta

1

¿Es una mala práctica mezclar código Java en los JSP? ¿O es peor duplicar el valor de 'completo'?

Mi opinión es que debe evitar mezclar código Java con JSP, incluso si esto significa una duplicación limitada de símbolos/valores.

Piénselo de esta manera: hay muchos, muchos cambios que podrían hacerse en el lado de Java que podrían "romper" un JSP. En este caso, por ejemplo, el nombre de "actionBean", los métodos getOrder() o getStatus() podrían cambiar. O getOrder() podría devolver un null o algo de un tipo diferente. Si te preocupaban todas las cosas que podrían cambiar en el lado de Java, acabarías sin usar taglibs.

0

¿No puede hacer la lógica de si desea o no "mostrar algunas cosas" fuera del JSP y simplemente pasar un parámetro booleano simple para decir si mostrar o no las cosas? De esta forma evitará duplicar el valor enum y también mantendrá ese bit de lógica en el controlador en lugar de en la vista.

1

El valor de enum con el que está comparando en JSP es realmente el mismo que String.valueOf(enum) y este es por defecto exactamente el nombre de la enumeración. Entonces, si cambias el nombre de la enumeración, entonces también deberías cambiar el código JSP. Por lo tanto, no veo ningún beneficio para comparar con el objeto enum actual. Se forzaría a String con String.valueOf(enum) y terminaría efectivamente comparando dos String entre sí. Solo mantenlo como está.

Con respecto a la referencia de código Java en un archivo JSP:

Todo el código Java que es (en) hace referencia directamente en el HttpServlet puede ser mayor desglose:

  • Si desea filtrar las peticiones/respuestas, utilice un Filter class.
  • Si desea interactuar con una base de datos, use un DAO class.
  • Si desea almacenar/transferir/acceder a datos, use un Javabean (DTO) class.
  • Si desea ejecutar la lógica comercial, use una clase Dominio (BO) (considere el patrón de estrategia).
  • Si desea tener/usar herramientas estáticas reutilizables, use una clase de utilidad (clase final, constructor privado).
Cuestiones relacionadas