2010-03-29 2 views
12

Есть ли веские причины запретить использование сценария или выражения EL в качестве значения атрибута?Есть ли веские основания использовать <rtexprvalue> false</ rtexprvalue> в тегах JSP?

Допустим, у нас есть тег:

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

Что может быть хорошим поводом для dissallowing ниже?

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

ответ

14

Я бы сказал, что это в основном мера обратной совместимости, так же, как возможность отключить EL полностью для данной JSP.

Возможно, библиотека тегов существовала до EL и использует специальный синтаксис $ {} для своих целей. Возможно, значение атрибута часто принимает значения, которые включают литерал $ {}.

Без такой настройки существующий код (в библиотеке тегов или JSP) необходимо будет изменить, чтобы продолжить работу после обновления до последней версии спецификации Servlet.

+0

Отличный ответ :). благодаря –

3

Возможно, потенциально могут быть атрибуты (например, id для обозначения самого тега), которые он не подходит для установки во время выполнения. Вероятно, вы могли бы придумать сценарий, в котором вы действительно хотели, чтобы ${} означал простой текст или где какой-либо контент EL оценивался вручную в каком-то настраиваемом контексте.

Но я думаю, что настоящая причина переключения - обратная совместимость. Пользовательские теги предшествуют встроенной поддержке JSP для EL; изменяя определение под taglib, так что ${} теперь имеет особое значение, вероятно, нарушит использование существующим шаблоном этого тега. Безопаснее по умолчанию использовать rtexprvalue-false для back-compat и позволить новым taglib для JSP 2.0 указать, что они хотят нового поведения.

[да. что сказал Тило. :-)]

 Смежные вопросы

  • Нет связанных вопросов^_^