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
You can use the IsNullOrWhiteSpace method to test whether a string is null , its value is String. Empty, or it consists only of white-space characters.
So it is better to use empty string for database as allowing NULL value forces the system to do extra work and does not give the data that you are looking for. However, NULL does not throw any exception when the count() function is executed.
If you're using velocity for AWS API Gateway, you need #if($car. fuel == "") to check for null in the response. The implicit approach ( #if($car. fuel) ) will not work.
Answer: Use the === Operator You can use the strict equality operator ( === ) to check whether a string is empty or not.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With