gpt4 book ai didi

jsp - 无法读取 bean 上的 bool 属性 'isEmpty'

转载 作者:行者123 更新时间:2023-12-03 22:45:30 24 4
gpt4 key购买 nike

我在显示 boolean 时遇到了一个奇怪的问题jsp 中 Java bean 的属性。似乎有一个名为 isEmpty() 的 setter/getter 在 EL 解析器上导致 ParseException。

出于演示目的,我创建了一个显示问题的类。

public class Bookcase {

public boolean isWithoutContent() {

return true;
}

public boolean isEmpty() {

return true;
}

}

调用jsp中的属性:
${bookcase.withoutContent}

${bookcase.empty}

首秀 true而第二个抛出错误:
org.apache.el.parser.ParseException: Encountered " "empty" "empty "" 
at line 1, column 23.

Was expecting:
<IDENTIFIER> ...

现在我知道有一个 EL empty运算符,但显然点运算符表明我正在调用 isEmpty() bookcase上的方法目的?显然不是,考虑到错误。

在实际的 bean 上,我不能/不想重命名 isEmpty()方法,但是如何在jsp中显示此属性?

最佳答案

empty是 EL 中的一个特殊关键字,它基本上检查空值和空值。它通常如下使用:

<c:if test="${empty bean.object}"> <!-- if (object == null) -->
<c:if test="${empty bean.string}"> <!-- if (string == null || string.isEmpty()) -->
<c:if test="${empty bean.collection}"> <!-- if (collection == null || collection.isEmpty()) -->
<c:if test="${empty bean.map}"> <!-- if (map == null || map.isEmpty()) -->
<c:if test="${empty bean.array}"> <!-- if (array == null || array.length == 0) -->
但是,您将它用作 bean 属性,而 EL 感到困惑。 EL specification 禁止使用 EL 关键字和 Java 标识符作为 bean 属性名称:

1.17 Reserved Words

The following words are reserved for the language and must not be used as identifiers.

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

Note that many of these words are not in the language now, but they may be in the future, so developers must avoid using these words.


您需要重命名它,或者使用大括号表示法,如 ${bean['empty']} ,或者作为一个完全不同的选择,让您的 Bookcase实现例如 Collection界面,这样您就可以使用 ${empty bookcase} .
也可以看看:
  • Evaluate empty or null JSTL c tags
  • How does EL empty operator work in JSF?
  • instanceof check in EL expression language
  • 关于jsp - 无法读取 bean 上的 bool 属性 'isEmpty',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33344961/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com