2010-03-29 14 views
12

¿Hay alguna buena razón para no permitir que scriptlet o expresión EL se inserte como valor de atributo?¿Hay alguna buena razón para usar <rtexprvalue> falso</ rtexprvalue> en las etiquetas JSP?

Digamos que tenemos la etiqueta:

<tag> 
    <name>mytag</name> 
    <tag-class>org.apache.beehive.netui.tags.tree.Tree</tag-class> 
    <attribute> 
     <name>attr</name> 
     <required>false</required> 
     <rtexprvalue>false</rtexprvalue> 
     <type>boolean</type> 
    </attribute> 
</tag> 

Lo que podría ser una buena razón para dissallowing el siguiente?

<my:mytag attr="${setting}" /> 

Respuesta

14

yo diría que es principalmente una medida de compatibilidad hacia atrás, al igual que la posibilidad de desactivar EL completamente para un determinado JSP.

Tal vez la biblioteca de etiquetas existía antes de EL, y usa la sintaxis especial $ {} para sus propios fines. Tal vez el valor del atributo frecuentemente toma valores que incluyen un literal $ {}.

Sin dicha configuración, el código existente (en la biblioteca de etiquetas o el JSP) tendría que modificarse para seguir funcionando después de la actualización a la última versión de la especificación del servlet.

+0

Respuesta perfecta :). Gracias –

3

Es posible que haya atributos (por ejemplo, id para referirse a la etiqueta) que no es adecuado configurar en tiempo de ejecución. Probablemente se te ocurra un escenario donde realmente quisieras que ${} significara texto sin formato, o donde cualquier contenido EL se evaluó manualmente en algún tipo de contexto personalizado.

Pero creo que la verdadera razón del cambio es la compatibilidad con versiones anteriores. Las etiquetas personalizadas son anteriores al soporte integrado de JSP para el EL; cambiar la definición debajo de un taglib para que ${} ahora tenga un significado especial es probable que rompa el uso de esa etiqueta en las plantillas existentes. Más seguro para el valor predeterminado de rtexprvalue-false para back-compat y dejar que los nuevos taglibs para JSP 2.0 especifiquen que desean el nuevo comportamiento.

[sí. lo que dijo Thilo. :-)]

Cuestiones relacionadas