Velocity CheckingForNull, checkingfornull
Q: I want to check for null, something like this:
#if ($car.fuel == null)
A: There are several approaches. Select the one most suitable depending on what you really want to do.
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 )
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" == "" )
BTW, just checkingEmptyCan be achieved:
#if( "$car.fuel" == "" )
Approach 3:Combine Approach 1 and 2. This will checkNull 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.
Approach 4:Use a Tool that can check for null (NullTool, ViewNullTool ).
#if( $null.isNull($car.fuel) )
Approach 5:Don't check for null directly, use a self-explaining method.
#if( $car.fuelEmpty )
public boolean isFuelEmpty(){ // return true if fuel is empty.}
Approach 6:Use a custom directive. cf. IfNullDirective, IfNotNullDirective
#ifnull( $car.fuel )#ifnotnull( $car.fuel )
userdirective = org.apache.velocity.tools.generic.directive.Ifnulluserdirective = org.apache.velocity.tools.generic.directive.Ifnotnull