Java velocity vm file #set use boolean variable

Java velocity vm file #set use boolean variable

apache velocity tutorial
velocity set variable
apache velocity syntax
velocity if else
else in velocity
java velocity elseif
velocity foreach
nvelocity if else

We can not use Boolean variable by #set when I find velocity project guidelines in Apache official site, but it is also worked when I use in my project.

#set($isRight=true)
#if($isRight)
  ##execute
#end

#set($isRight=false)
#if($isRight)
  ##not execute
#end

I want to know whether #set Boolean variable is supported by velocity and the way I use whether is legal.


In velocity, there are no explicit data types and hence there is no Boolean variables support. But since velocity has been built on JAVA platform, if you specify a compatible value then it can give you expected results in such operations like the "if" operation (the one shown in your code). This is because in Java, a boolean value is expected in an if expression and you are providing something which can be easily casted to a boolean.

If you give something like #set($isRight=true1) , the above written code will be internally treated by the Java engine like you specified a String inside 'if' expression which couldn't be casted to a boolean and hence will throw up a type cast exception(or ClassCastException). This will happen with any value other than 'true' or 'false' which are actually strings here but can be successfully casted to Boolean which is expected inside 'if' expression.

Thus its not the Boolean type support, but the Java implementation behind the scenes makes the things work.

Apache Velocity Engine, Velocity knows a number of relational and logical operators. They can be used everywhere an expression is evaluated, most prominently in #if and #set� Velocity How to use dollar sign in velocity Data Type: bool Data Type: number Data Type: String Use Velocity to generate HTML document Foreach loop with negative index in velocity How to set a variable value using velocity How to define variable in Velocity Use if in velocity Use if else and end statements in velocity Use if and elseif statements in velocity Date Tool Example Velocity with


Velocity 2.0, yet to be released, does support such tests.

Meanwhile, you can resort to #if("isRight"=="true")...

6. Operators, With that one-time include (put it in the <head> of your templates) now you can refer to Now it's clear that you're using the variable as a Boolean. isn't a valid expression in Velocity Template Language since it starts with a number. But VTL is an often frustrating “friendlier” dialect on top of Java which� Reference variable by name: 2. Velocity Variable Noise Reference: 3. Velocity Variable Quite Reference: 4. Set variable value: 5. Velocity Variable Add: 6. Pass variable into Velocity: 7. Use a variable defined in Velocity


Experience shows that your example works, but you are right that the documentation does not say explicitly that you can assign a Boolean value to variables using the #set directive (there are meticulously detailed cases and lack of information about Boolean among them).

Therefore, if you want to be sure that you are writing code 100% compatible with the documentation, then instead of explicit Boolean you can use other values, which according to the documentation will be converted to Boolean. They are e.g. 0 for false and 1 for true.

Then your example would look like this:

#set ($isRight = 1)
#if ($isRight)
  ## execute
#end

#set ($isRight = 0)
#if ($isRight)
  ## not execute
#end

Yet another way to make Velocity's Boolean-flavore, If my Boolean is set to 1, I want to do this. then a Boolean variable can have one of two canonical [1] values: And they were trying to use it in a Boolean context (an #if() condition) Velocity is more forgiving than Java, so it doesn't throw an error[4] when non-Booleans are used in a Boolean condition. STEP:3 ---> We have used VTL inside the template file “ include_directive_iclude_file.vm ”[File going whose contents are going to be added in “ include_dirtective.vm”]


Converting Integer 1/0 to Boolean true/false in Velocity — TEKNKL , the Velocity distribution. #set. The #set directive assigns variables' values. #if� boolean expression> I <boolean literal> I <boolean variable reference� true file org.apache. velocity. runtime. resource. ResourceCachelmpl library. vm want to use more than one global library file, then split the filenames with a comma. Many of the examples in this guide deal with using Velocity to embed dynamic content in web sites, but all VTL examples are equally applicable to other pages and templates. Thanks for choosing Velocity! What is Velocity?¶ Velocity is a Java-based template engine. It permits web page designers to reference methods defined in Java code.


Data Type: bool : Data Type � Velocity � Java, The main difference between Properties and Methods is that you can specify a parameter list Usage: $ref - The LHS of the assignment must be a variable reference or a property condition - If a boolean, considered true if it has a true false; if not a boolean, #include - Renders local file(s) that are not parsed by Velocity. How to use expressions with #set method of java apache velocity with Example Share Link How to use Input stream or BLOB binary stream as velocity template file with Example


Velocity Reference, These variables can be referenced by a Velocity template using the $local prefix. Sets user defined references to Java classes used in the Velocity template. boolean, The value returned is converted from the ASTERIA Boolean data type. The Velocity context only contains Java objects, so any method that returns a boolean primitive will automatically wrapped into a java.lang.Boolean object. The content between the #if and the #end statements becomes the output if the evaluation is true. In this case, if $foo is true, the output will be: Velocity!.