zoukankan      html  css  js  c++  java
  • Velocity 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 is null 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 is null or empty.

    BTW, just checking for empty can be achieved by:

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

     

    Approach 3: Combine Approach 1 and 2. This will check for null 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. IfNullDirectiveIfNotNullDirective

    #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.Ifnull
    userdirective = org.apache.velocity.tools.generic.directive.Ifnotnull
  • 相关阅读:
    JVM 垃圾收集与内存分配
    JVM 内存管理机制
    JVM 启动调优总结
    Visual Studio 2019 秘钥
    dubbo初学采坑记
    Intellij idea 一个窗口打开多模块并添加依赖
    Intellij idea 自动生成serialVersionUID
    office visio 2019 下载激活
    ASP.NET Core中的配置
    electron快捷键
  • 原文地址:https://www.cnblogs.com/annjia/p/4546377.html
Copyright © 2011-2022 走看看