$null check in velocity
Solution 1
To check if a variable is not null simply use #if ($variable)
#if ($variable) ... do stuff here if the variable is not null #end
If you need to do stuff if the variable is null simply negate the test
#if (!$variable) ... do stuff here if the variable is null #end
Solution 2
Approach 1: Use the fact that null is evaluated as a false conditional. (cf. http://velocity.apache.org/engine/devel/user-guide.html#Conditionals)
#if( ! $car.fuel )
Note: The conditional will also pass if the result of $car.fuel is the boolean false. What this approach is actually checking is whether the reference is null or false.
Approach 2: Use the fact that null is evaluated as an empty string in quiet references. (cf. http://velocity.apache.org/engine/devel/user-guide.html#quietreferencenotation)
#if( "$!car.fuel" == "" )
Note: The conditional will also pass if the result of $car.fuel is an empty String. What this approach is actually checking is whether the reference is null or empty. BTW, just checking for empty can be achieved by:
#if( "$car.fuel" == "" )
Approach 3: Combine Approach 1 and 2. This will check for null and null only.
#if ((! $car.fuel) && ("$!car.fuel" == ""))
Note: The logic underlying here is that: "(null or false) and (null or
empty-string)" => if true, must be null. This is true because "false and empty-string and not null" is never true. IMHO, this makes the template too complicated to read.
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
I came to know about null check using $null in velocity 1.6 through a resource updated by you. Resource: Reading model objects mapped in Velocity Templates But I am facing so many challenges that there is no $null for null check in velocity as there is no documentation provided about this. Please provide me with documentation stating $null as valid for null check in velocity.
Thanks in Advance lucky
-
TJ- almost 13 yearsthis would also return true in case of boolean values. This is a nice documentation for null checks : wiki.apache.org/velocity/CheckingForNull
-
ecoe over 6 yearsfollowing up on @TJ comment, any idea how to import
NullTool
as of recent? It does not appear to be in velocity-tools 2.0. -
DBencz about 2 yearsIf you're using velocity for AWS API Gateway, you need
#if($car.fuel == "")
to check fornull
in the response. The implicit approach (#if($car.fuel)
) will not work.