1

我正在使用 Struts1 和 JSP。我可以使用标签访问表单属性,<bean:write>但不能使用 JSTL 来访问。为什么不?我的表格是DynaActionForm.

该声明有效:

<bean:write name="myForm" property="origin"/>

这不起作用,显示 ${myForm.map.origin} 普通香草:

<c:out value="${myForm.map.origin}"/>

这也不起作用,显示 ${myForm.origin} 普通香草:

<c:out value="${myForm.origin}"/>
4

1 回答 1

4

如果 Servlet/JSP、JSTL 和/或 web.xml 版本不匹配,就会发生这种情况。在 Servlet 2.3/JSP 1.2 期间,EL 是 JSTL 1.0 的一部分。在 Servlet 2.4/JSP 2.0 期间,EL 从 JSTL 转移到 JSP,并且 JSTL 1.1 没有 EL。web.xml 版本声明指示当前使用的 Servlet/JSP 版本,并且必须由目标容器支持。

因此,如果您在 Servlet 2.4/JSP 2.0 上使用 JSTL 1.0,或者在 Servlet 2.3/JSP 1.2 上使用 JSTL 1.1,那么您将面临这个问题。此外,如果您在 Servlet 2.4/JSP 2.0 上使用 JSTL 1.1,但 web.xml 被声明为符合 Servlet 2.3(或不包含任何版本声明),那么您也将面临这个问题。

一切都在我们的 JSTL wiki 页面中进行了解释。您还可以在其中找到正确 JSTL 版本的下载链接以及正确版本特定 web.xml 声明的示例。

另一个可能的原因是您<%@page isElIgnored="true"%>在 JSP 顶部或<jsp-config><el-ignored>true</el-ignored></jsp-config>in 中有一个声明web.xml,但这是一个不容忽视的明显原因。

于 2012-09-13T19:15:55.910 回答