Velocity CheckingForNull, checkingfornull

Source: Internet
Author: User

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 )
  • 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 isNull 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 isNull or empty.

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) )
  • Note:Of course, NullTool must be in the Context as $ null in this case.

 

Approach 5:Don't check for null directly, use a self-explaining method.

#if( $car.fuelEmpty )
  • Note:This is my (Shinobu Kawai's) recommended solution. You have to implement the method, but it makes the template so easy-to-read.

 

public boolean isFuelEmpty(){  // return true if fuel is empty.}

Approach 6:Use a custom directive. cf. IfNullDirective, IfNotNullDirective

#ifnull( $car.fuel )#ifnotnull( $car.fuel )
  • Note:You will have to register the directive in your velocity. properties.

userdirective = org.apache.velocity.tools.generic.directive.Ifnulluserdirective = org.apache.velocity.tools.generic.directive.Ifnotnull

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.