Есть ли веская причина использовать <rtexprvalue> false</rtexprvalue> в тегах JSP?
Есть ли веская причина запретить использование сценария или выражения EL в качестве значения атрибута?
Скажем, у нас есть тег:
<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>
Что может быть хорошей причиной для отказа от ниже?
<my:mytag attr="${setting}" />
Ответы
Ответ 1
Я бы сказал, что это в основном мера обратной совместимости, так же как возможность полностью отключить EL для данного JSP.
Возможно, библиотека тегов существовала до EL и использует специальный синтаксис ${} для своих целей. Возможно, значение атрибута часто принимает значения, которые включают литерал ${}.
Без такой настройки существующий код (в библиотеке тегов или JSP) необходимо будет изменить, чтобы продолжить работу после обновления до последней версии спецификации Servlet.
Ответ 2
В качестве потенциально могут быть атрибуты (например, id
для обозначения самого тега), которые он не подходит для установки во время выполнения. Вероятно, вы могли бы придумать сценарий, в котором вы действительно хотели бы, чтобы ${}
означал простой текст или где какой-либо контент EL оценивался вручную в каком-то настраиваемом контексте.
Но я думаю, что настоящая причина переключения - обратная совместимость. Пользовательские теги предшествуют встроенной поддержке JSP для EL; изменяя определение под taglib, так что ${}
теперь имеет особое значение, вероятно, нарушит использование существующим шаблоном этого тега. Безопаснее по умолчанию использовать rtexprvalue-false для back-compat и позволить новым taglib для JSP 2.0 указать, что они хотят нового поведения.
[да. что сказал Тило.: -)]