I often have cases when a string value is absent and/or empty. Is this the best way to test this condition?
#if( $incentive.disclaimer && $!incentive.disclaimer != '' )
$incentive.disclaimer
#end
I often have cases when a string value is absent and/or empty. Is this the best way to test this condition?
#if( $incentive.disclaimer && $!incentive.disclaimer != '' )
$incentive.disclaimer
#end
If you just want Velocity to display the value if there, or display nothing if absent, a quiet reference by itself will do the trick:
$!incentive.disclaimer
If you're wanting to explicitly test for empty, StringUtils from Apache Commons Lang can help. First add it to your Context (reference here):
context.put("StringUtils", StringUtils.class);
Though if you're on an older version of Velocity, it may not like the class reference, so you can add an instance instead:
context.put("StringUtils", new StringUtils());
Then you can call its isEmpty method from your Velocity template:
#if($StringUtils.isEmpty($incentive.disclaimer))
## logic here...
#end
If you want whitespace treated as empty, there's also isBlank.
For cases where just $!incentive.disclaimer
doesn't fit http://wiki.apache.org/velocity/CheckingForNull suggests a short solution:
#if( "$!car.fuel" != "" )
Bla bla $!incentive.disclaimer.
If $incentive.disclaimer is null or "", Velocity will render:
Bla bla .
Refer to the official Guide section: https://velocity.apache.org/engine/devel/user-guide.html#quiet-reference-notation
Most common case when you do want #if: your variable is just a part of a bigger piece of text and you don't want to show it if the variable is empty. Then you need this:
#if($incentive.disclaimer && !$incentive.disclaimer.empty)
Please read our incentive disclaimer:
$incentive.disclaimer
#end