admin管理员组

文章数量:1410737

In my Spring MVC project I am getting the one Boolean variable as a model attribute from the controller in my JSP view. based on the Boolean variable's value I have to execute the Js code. So I am paring the value in the if statement. but it is not giving me the correct output:

The code is something like this:

In spring controller the Boolean variable is:

boolean isAdmin;

which is recieved by the JSP view and I can access it as follows:

$(isAdmin)

In my JSP view I am doing as follows:

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

  if('${isAdmin}'){

   // some code
  }

</script>

So in the above if statement if the value of the isAdmin is false than it should not be execute if block but it does executed even the value is true.

I also pared the value of the Boolean variable as follow:

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

But these both are also not working.

So correct me where I am doing the wrong? and what is the correct parison method for this?

In my Spring MVC project I am getting the one Boolean variable as a model attribute from the controller in my JSP view. based on the Boolean variable's value I have to execute the Js code. So I am paring the value in the if statement. but it is not giving me the correct output:

The code is something like this:

In spring controller the Boolean variable is:

boolean isAdmin;

which is recieved by the JSP view and I can access it as follows:

$(isAdmin)

In my JSP view I am doing as follows:

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

  if('${isAdmin}'){

   // some code
  }

</script>

So in the above if statement if the value of the isAdmin is false than it should not be execute if block but it does executed even the value is true.

I also pared the value of the Boolean variable as follow:

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

But these both are also not working.

So correct me where I am doing the wrong? and what is the correct parison method for this?

Share asked Aug 24, 2017 at 7:08 Akshay PethaniAkshay Pethani 2,6002 gold badges32 silver badges44 bronze badges 8
  • 3 Use '${isAdmin}' === 'true'. – alexmac Commented Aug 24, 2017 at 7:11
  • @alexmac Thank you. Your solution is correct. – Akshay Pethani Commented Aug 24, 2017 at 7:14
  • 1 The answer is in your question. You're wrapping it in single quotes, which means it's not true but 'true', which is text. – user5734311 Commented Aug 24, 2017 at 7:14
  • @ChrisG but without wrapping it in single quote gives pile time error – Akshay Pethani Commented Aug 24, 2017 at 7:17
  • 2 @ChrisG Yes, the reason for the single quote is that EL expressions should be wrapped by quotes. – Suresh Atta Commented Aug 24, 2017 at 7:18
 |  Show 3 more ments

4 Answers 4

Reset to default 3

As far as I understand your scenario, you have a boolean variable isAdmin in the server side (JSP). You want to inject it in a javascript code, but it is not working, because you are creating a string literal instead of a boolean one:

if ('true') {
  console.log('This always executes');
}

if('false') {
  console.log('This always executes, too');
}

This happens because any non empty string is considered a "truthy" value by Javascript.Remove the quotes and it will work. But for the sake of cleanliness, I would move the Javascript code to its own file and I will create a hidden field in the HTML code to store the isAdmin value:

<input id="isAdminFlag" type="hidden" value="${isAdmin}" />


if ($('isAdminFlag').val() == 'true') { ... }

Since the resulted value is a String and you are expecting a boolean, '${isAdmin}' should be check against a boolean String value. As already someone mented, it should be '${isAdmin}' === 'true'.

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

The reason why it is always executing is Javascript truthify the if expression. For example if("false") is evalutes to true and executes

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

Why not just use the value without quotes?

if (${isAdmin}) {

Your rendered js code is wrong. Rendering engine should put the value of 'isAdmin' in js code, but actually not doing. You need to add your script like this

 <script>
<![CDATA[
     var isTrueSet = ('${isAdmin}'=== 'true');

      if(isTrueSet ){
          // some code
  }
]]>
</script>

本文标签: javaComparison of JavaScript Boolean variables in IF statementsStack Overflow