JSp

不允许将Java关键字用作EL标识符

发布于 2021-02-01 16:20:48

最近,我将开发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有权拒绝这些名称吗?他们指的是规范的哪一点,您认为他们在正确地解释它。

关注者
0
被浏览
63
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    规范说,标识符仅限于在Java中有效的标识符。

    这两个staticclass是Java关键字,所以不可能是有效的标识符。例如,您不能这样写:

    public int static = 7;
    

    因此,这里static也不class是有效的标识符。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看