Velocity,检查字符串是否为空且不为空的最有效方法是什么

时间:2012-10-31 12:54:33

标签: velocity

我经常遇到字符串值不存在和/或为空的情况。这是测试这种情况的最佳方法吗?

#if( $incentive.disclaimer && $!incentive.disclaimer != '' ) 
   $incentive.disclaimer 
#end

3 个答案:

答案 0 :(得分:36)

如果您只是希望Velocity在那里显示值,或者如果没有则显示任何内容,quiet reference本身就可以解决问题:

$!incentive.disclaimer

如果您想明确测试为空,StringUtils Apache Commons Lang可以提供帮助。首先将其添加到您的上下文(引用here):

context.put("StringUtils", StringUtils.class);

虽然如果您使用的是Velocity的旧版本,但它可能不喜欢类引用,因此您可以添加实例:

context.put("StringUtils", new StringUtils());

然后你可以从你的Velocity模板中调用它的isEmpty方法:

#if($StringUtils.isEmpty($incentive.disclaimer))
    ## logic here...
#end

如果您希望将空格视为空,则还有isBlank

答案 1 :(得分:30)

对于仅$!incentive.disclaimer不适合http://wiki.apache.org/velocity/CheckingForNull的情况,建议采用简短解决方案:

#if( "$!car.fuel" != "" )

答案 2 :(得分:14)

您需要安静的参考符号:$!incentive.disclaimer

Bla bla $!incentive.disclaimer. 

如果 $ incentive.disclaimer null “”,Velocity将呈现:

Bla bla .

请参阅官方指南部分: https://velocity.apache.org/engine/devel/user-guide.html#quiet-reference-notation

有时您需要#if

最常见的情况是,当你想要#if时:你的变量只是一段较大文本的一部分而你不想在变量为空时显示它。然后你需要这个:

#if($incentive.disclaimer && !$incentive.disclaimer.empty) 
    Please read our incentive disclaimer:
    $incentive.disclaimer
#end