最近,我将开发tomcat从7.0.0升级到7.0.4。我有这样的事情:
<c:set var="static" value=".." /> <c:set var="class" value=".." />
两者都在7.0.0上运行,但停止在7.0.4上运行。我打开了一个错误,将其关闭,其答案是:
该标签本身将进行编译。 对Java标识符的检查已添加到EL处理中,因此我怀疑您在页面上的其他地方有一些非法EL。
该标签本身将进行编译。
对Java标识符的检查已添加到EL处理中,因此我怀疑您在页面上的其他地方有一些非法EL。
这听起来还不太清楚,但是我没有得到后续的答案,因此我查看了EL规格。对于JSP 2.1(最新版本是2.2),我发现:
第1章,第21页:标识符被限制为Java标识符-例如,no-,no /等。
这是我发现的最多的东西。我将以适用于Java标识符的语法要求而不适用保留字的方式来阅读此行(因为nighter class也不会static出现在EL的保留字列表中)。JLS没有用“ Java标识符”一词来指代(并且在2.2规范中的某些其他情况下,我没有完整介绍过)
class
static
因此,Tomcat有权拒绝这些名称吗?他们指的是规范的哪一点,您认为他们在正确地解释它。
规范说,标识符仅限于在Java中有效的标识符。
这两个static和class是Java关键字,所以不可能是有效的标识符。例如,您不能这样写:
public int static = 7;
因此,这里static也不class是有效的标识符。