为什么$ {flag == Y}返回True,而$ {flag =='Y'}返回False?

时间:2019-07-01 10:06:24

标签: java jsp servlets jstl undefined

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

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

情况1:标志未传递到视图(输出):

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

2 个答案:

答案 0 :(得分:5)

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

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

在第一种情况下,它们都是未定义的变量,因此它返回true

答案 1 :(得分:1)

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