Velocity Template Language: Connect two conditions in one #elseif() statement

13.5k views Asked by At

In my example the parameters are:

$p2.length

which has the value "0"

and the boolean

$suspectYesNo which is set to "false".

I would expect, that in my code the second #elseif will run due to my set parameters, but however it shows up that "Code 4 runs"

I guess, that my mistake is the connection of both conditions using "&&", but I have no clue how to correctly define the line with two conditions.

That brings me to the question: How to correctly combine the two conditions ($p2.length()==0) AND ($suspectYesNo.value.contains("true")) in one #elseif().

Or did I define the boolean wrong?

  #if($p2.length()>0)

  Code 1 runs

  #elseif($p2.length()==0 && $suspectYesNo.value.contains("true"))

  Code 2 runs

  #elseif($p2.length()==0 && $suspectYesNo.value.contains("false"))

  Code 3 runs

  #else

  Code 4 runs

  #end
1

There are 1 answers

0
SteffPoint On BEST ANSWER

Thanks to user7294900 for providing me a reference with which I could solve the problem.

It did not read the boolean value as a string, which could be fixed by adding "toString()" method.

With this code here it works as desired:

  #if($p2.length > 0)

  Code 1 runs

  #elseif($p2.length == 0 && $suspectYesNo.value.toString().contains("true"))

  Code 2 runs

  #elseif($p2.length == 0 && $suspectYesNo.value.toString().contains("false"))

  Code 3 runs

  #else

  Code 4 runs

  #end