我正在使用Struts1和JSP。我可以使用<bean:write>
标记访问表单属性,但我无法使用JSTL。为什么不?我的表单是DynaActionForm
。
此声明有效:
<bean:write name="myForm" property="origin"/>
这不起作用,显示$ {myForm.map.origin} plain vanilla:
<c:out value="${myForm.map.origin}"/>
这也不起作用,显示$ {myForm.origin} plain vanilla:
<c:out value="${myForm.origin}"/>
答案 0 :(得分: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(或者不包含任何版本声明),那么你也将面临这个问题。
所有问题都在our JSTL wiki page中解释。您还可以找到正确的JSTL版本的下载链接以及正确的特定于版本的web.xml声明的示例。
另一个可能的原因是您在JSP顶部发出了<%@page isElIgnored="true"%>
声明,<jsp-config><el-ignored>true</el-ignored></jsp-config>
中发现了web.xml
声明,但这是一个被忽视的明显原因。