2010-03-29 16 views
12

Existe-t-il une bonne raison d'interdire l'insertion d'une expression scriptlet ou EL comme valeur d'attribut?Y a-t-il une bonne raison d'utiliser <rtexprvalue> false</ rtexprvalue> dans les balises JSP?

Disons que nous avons tag:

<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> 

ce qui pourrait être une bonne raison pour le dissallowing ci-dessous? Je dirais que ce sont surtout

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

Répondre

14

une mesure de compatibilité ascendante, tout comme la possibilité de désactiver complètement EL pour une JSP donnée.

Peut-être que la bibliothèque de balises existait avant EL et utilise la syntaxe spéciale $ {} à ses propres fins. Peut-être que la valeur de l'attribut prend fréquemment des valeurs qui incluent un $ {} littéral.

Sans un tel paramètre, le code existant (dans la bibliothèque de balises ou la JSP) devrait être modifié pour continuer à fonctionner après la mise à niveau vers la dernière version de la spécification de servlet.

+0

Parfait réponse :). Merci –

3

Il peut exister des attributs (par exemple id pour faire référence à l'étiquette elle-même) qu'il n'est pas approprié de définir au moment de l'exécution. Vous pourriez probablement arriver à un scénario dans lequel vous vouliez vraiment ${} signifier du texte brut, ou où tout contenu EL était évalué manuellement dans un contexte personnalisé.

Mais je pense que la véritable raison de ce changement est la rétrocompatibilité. Les étiquettes personnalisées sont antérieures à la prise en charge intégrée de JSP pour l'EL; changer la définition sous un taglib pour que ${} ait maintenant une signification spéciale est susceptible de briser l'utilisation de ce tag par les templates existants. Plus sûr de par défaut à rtexprvalue-false pour back-compat et laisser de nouveaux taglibs pour JSP 2.0 spécifier qu'ils veulent le nouveau comportement.

[oui. ce que Thilo a dit. :-)]