Velocity, what's the most efficient way to check if a string is empty and not null

后端 未结 3 1551
我寻月下人不归
我寻月下人不归 2020-12-16 10:02

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         


        
相关标签:
3条回答
  • 2020-12-16 10:27

    For cases where just $!incentive.disclaimer doesn't fit http://wiki.apache.org/velocity/CheckingForNull suggests a short solution:

    #if( "$!car.fuel" != "" )
    
    0 讨论(0)
  • 2020-12-16 10:29

    You want Quiet Reference Notation: $!incentive.disclaimer

    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

    Sometimes you do need #if

    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
    
    0 讨论(0)
  • 2020-12-16 10:32

    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.

    0 讨论(0)
提交回复
热议问题