不允许将Java关键字用作EL标识符
最近,我将开发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。
这听起来还不太清楚,但是我没有得到后续的答案,因此我查看了EL规格。对于JSP 2.1(最新版本是2.2),我发现:
第1章,第21页:标识符被限制为Java标识符-例如,no-,no /等。
这是我发现的最多的东西。我将以适用于Java标识符的语法要求而不适用保留字的方式来阅读此行(因为nighter
class
也不会static
出现在EL的保留字列表中)。JLS没有用“
Java标识符”一词来指代(并且在2.2规范中的某些其他情况下,我没有完整介绍过)
因此,Tomcat有权拒绝这些名称吗?他们指的是规范的哪一点,您认为他们在正确地解释它。
-
规范说,标识符仅限于在Java中有效的标识符。
这两个
static
和class
是Java关键字,所以不可能是有效的标识符。例如,您不能这样写:public int static = 7;
因此,这里
static
也不class
是有效的标识符。
-
标识符与关键字
2021-01-30 关注 0 浏览121 1答案
-
下列标识符不是关键字的是( )。
2022-05-11 关注 0 浏览12 1答案
-
下列标识符不是关键字的是( )。
2022-05-11 关注 0 浏览11 1答案
-
下列标识符不是关键字的是( )。
2022-05-13 关注 0 浏览11 1答案
-
在下列字符中,不允许作为C++标识符的是()。
2020-12-25 关注 0 浏览60 1答案
-
在下列字符中,不允许作为C++标识符的是( )。
2022-05-13 关注 0 浏览22 1答案
-
在Java编译器中,可以将哪种类型定义为标识符(ID)或关键字(保留字)?
2021-01-29 关注 0 浏览112 1答案
-
使用可以接受不是标识符的kwargs关键字参数的函数安全吗?
2021-01-29 关注 0 浏览112 1答案
-
如何检查字符串是否是有效的python标识符?包括关键字检查?
2021-01-29 关注 0 浏览91 1答案
-
可在C程序中用作用户标识符的一组标识符是
2022-05-11 关注 0 浏览43 1答案