为什么 ${flag==Y} returns 正确而 ${flag=='Y'} returns 错误?

Why ${flag==Y} returns True and ${flag=='Y'} returns False?

我对以下行为感到困惑。变量标志从控制器传递到 jsp代码:

flag: <c:out value="${requestScope.flag}"/> 
flag eq 'Y': ${requestScope.flag eq 'Y'}
flag == 'Y': ${requestScope.flag=='Y'}
flag==Y: ${requestScope.flag==Y}

情况一:标志没有传递给视图(输出):

flag: 
flag eq 'Y': false 
flag == 'Y': false 
flag==Y: true

情况 2:将值 "Y" 的标志传递给视图:

flag: Y
flag eq 'Y': true 
flag == 'Y': true 
flag==Y: false

requestScope.flag==Y 表示与未定义的变量 Y 进行比较

因此,当发送标志时,未定义的变量不等于标志,在第二种情况下 return false,

虽然在第一种情况下两者都是未定义的变量,因此它 returns true

'Y' 是一个值为 'Y' 的字符串,而 Y 是一个变量。