Подтвердить что ты не робот

Есть ли веская причина использовать <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}" />
4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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