我们最近在一个项目中切换到 Servlet 2.4 和 JSP 2,并且我们的自定义标记不再起作用。 我们有这样的标签:
<myTags:someTag value="${x}" />
一旦进入标签,我们就评估 x bean 并从那里开始。现在评估直接在 JSP 中进行,我们得到一个为 value 属性设置的字符串(显然是 x.toString())。
标签不多,我可以在几天内调整它们,但我该怎么做呢?我在网上找不到任何内容(或者也许我没有在应该查找的地方查找)。
如何将 x bean 传递到我的标记并在那里对其进行评估,并且不允许在 JSP 中对其进行评估?
附注我不想停用 EL 引擎
谢谢!
最佳答案
如果您重新声明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
.
关于java - JSP 2 和 Servlet 2.4 破坏了我的自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3754429/