为什么 ${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
是一个变量。
我对以下行为感到困惑。变量标志从控制器传递到 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
是一个变量。