代码之家  ›  专栏  ›  技术社区  ›  Bozho

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

  •  8
  • Bozho  · 技术社区  · 14 年前

    <c:set var="static" value=".." />
    <c:set var="class" value=".." />
    

    两者都在7.0.0上工作,但在7.0.4上停止工作。我 opened a bug ,它被关闭了,答案是:

    就其本身而言,该标记将被编译。

    Java标识符的检查被添加到EL处理中,所以我怀疑 你在页面的其他地方有一些非法的EL。

    这听起来不太清楚,但我没有得到随后的答案,所以我查看了EL规范。对于JSP 2.1(最新版本是2.2),我发现:

    这是我找到的最多的。我将以应用于java标识符的语法要求的方式阅读这一行,但不应用保留字(因为neighter class 也不是 static

    所以,Tomcat拒绝这些名称是正确的吗?它们所指的规范的哪一点,您认为它们是否正确地解释了它。

    2 回复  |  直到 14 年前
        1
  •  5
  •   VoteyDisciple    14 年前

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

    两者 static class

    public int static = 7;
    

    所以也不是 静止的 也不是 在这里也是有效的标识符。

        2
  •  3
  •   BalusC    14 年前

    JSP 2.2 EL specification :

    1.14保留字

    标识符。

        and   eq     gt     true   instanceof
        or    ne     le     false  empty
        not   lt     ge     null   div        mod
    

    注意,这些单词中的许多现在不在语言中,但是它们可能在 所以开发人员必须避免使用这些词。

    static , class 没有 对我来说有意义。