2017-08-24 120 views
2

在我的春天MVC项目我得到了一个布尔变量从控制器我JSP视图模型属性比较JavaScript的布尔变量。基于布尔变量的值,我必须执行Js代码。所以我在比较if语句中的值。但它不给我正确的输出:在IF语句

的代码是这样的:

春季控制器的布尔变量是:

boolean isAdmin; 

这是由JSP视图收到,我可以如下访问:

$(isAdmin) 

在我的JSP鉴于我做如下:

<script> 
    alert('${isAdmin}') // which gives the correct value .i.e : true/false 

    if('${isAdmin}'){ 

    // some code 
    } 

</script> 

所以在上面的if语句,如果isAdmin的值是比它不应该,如果块中执行,但它不执行甚至值为

我还比较布尔变量如下的值:

if('${isAdmin}' == true) 
if('${isAdmin}' === true) 

但这些都还不能正常工作。

所以纠正我在哪里,我做了错误的?什么是正确的比较方法呢?

+3

使用' '$ {} isAdmin' ===“true''。 – alexmac

+0

@alexmac谢谢。您的解决方案正确。 –

+1

答案在你的问题中。你用单引号包装它,这意味着它不是“真”,而是“真”,这是文本。 –

回答

2

由于结果值是一个字符串,你期待一个布尔值,'${isAdmin}'应核对一个布尔字符串值。前面已经有人评论说,应该是'${isAdmin}' === 'true'

if('${isAdmin}' === 'true') { 
    // TODO 
} 

它总是执行的原因是Javascript真实性if表达式。例如if("false")是演算值为真,执行

if("false"){ 
 
alert("What ??"); 
 
}

1

为什么不直接使用不带引号的价值?

if (${isAdmin}) { 
+2

JSP将无法识别它并引发编译器错误 –

+0

是它给编译时错误