为什么 ${!blabla.blibli} returns 在 JSTL 中为真,即使 blabla 不存在?

Why ${!blabla.blibli} returns true in JSTL even if blabla doesn't exist?

正如标题中提到的,我不明白为什么当变量 blabla 不存在时我有:

${blabla.blabla} returns 没什么

${!blabla.blabla} returns 真

我猜想在 jstl 评估中有一个隐式异常捕获,但我无法理解内部过程以及为什么它会这样工作,尤其是当我们使用以下语言时:not empty,和其他检查器组件。背后的逻辑是什么?

JSP ELNULL 友好的,如果找不到给定的属性或表达式 returns null,它不会抛出任何异常。

对于算术运算,EL将null视为0,对于逻辑运算,EL将null视为false.

所以当你尝试“!”对于未找到的变量 returns true

希望对您有所帮助!