最近我将我的开发tomcat从7.0.0升级到7.0.4。我有这样的事情:
<c:set var="static" value=".." />
<c:set var="class" value=".." />
两者都在 7.0.0 上工作,但在 7.0.4 上停止工作。我打开了一个错误 https://issues.apache.org/bugzilla/show_bug.cgi?id=50147,它被关闭了,答案是:
该标签本身将被编译。
对 Java 标识符的检查已添加到 EL 处理中,因此我怀疑
您在页面的其他地方有一些非法 EL。
这听起来不太清楚,但我没有得到后续答案,所以我查看了 EL 规范。对于 JSP 2.1(最新的是 2.2)我发现:
第 1 章第 21 页:标识符被限制为 Java 标识符 - 例如,无 -、无 / 等。
这是我发现的最多的。我会以适用于 java 标识符的语法要求的方式阅读这一行,但不适用保留字(因为更近class
nor static
出现在 EL 中的保留字列表中)。 JLS 并未提及术语“Java 标识符”(它适用于 2.2 规范中的其他一些情况,我没有完全审查)
那么,Tomcat 拒绝这些名字是否正确?他们指的是规范的哪一点,您认为他们的解释正确吗?
该规范规定标识符仅限于在 Java 中有效的标识符。
Both static
and class
是 Java 关键字,因此不可能是有效的标识符。例如,你不能这样写:
public int static = 7;
所以两者都不是static
nor class
这里也将是有效的标识符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)