JSP 2 и Servlet 2.4 сломали мои пользовательские теги - PullRequest
1 голос
/ 20 сентября 2010

Недавно мы перешли на Servlet 2.4 и JSP 2 в проекте, и наши пользовательские теги больше не работают.У нас есть теги вроде:

<myTags:someTag value="${x}" />

и один раз в теге мы оценили x bean и пошли оттуда.Теперь оценка происходит непосредственно в JSP, и мы получаем набор String (очевидно, x.toString ()) для атрибута значения.

Тегов не так много, и я могу адаптировать их через несколько дней, ноКак мне это сделать?Я не смог найти что-либо в Интернете (или, может быть, я не смотрю, куда мне следует).

Как передать бин x в мой тег и оценить его там, а не позволить его оценить вJSP?

PS Я не хочу деактивировать EL-двигатель

Спасибо!

1 Ответ

2 голосов
/ 20 сентября 2010

Если вы переопределите web.xml как Servlet 2.4 следующим образом

<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

и файл tld как JSP 2.0 taglib следующим образом:

<taglib 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
    version="2.0"> 

Затем вы можете добавить <rtexprvalue>true</rtexprvalue> записей для пометки атрибутов в файле TLD, которые ожидают значения EL.Например,

<attribute>
    <name>value</name>
    <rtexprvalue>true</rtexprvalue>
</attribute>

По умолчанию это false.

...