VelocityNullSupport

Here are some requests for null support in Velocity. [WWW] Here is the discussion about this on the developer list.

The word "null" should be treated as null in Velocity specific content

For example:

#set ($list = ["one", null, "three"])

should make a 3 element list, with the elements "one", null and "three".

$foo.bar(null)

should call the "bar" method of the "foo" object with a null parameter.

Workarounds

  1. An unreferenced reference is treated as null, so

The "if" directive should be able to compare references with null

For example:

#if ($foo == null)
foo is null
#end

should output

foo is null

if foo was not in the Context.

#if ($foo != null)
foo is not null
#end

should output

foo is not null

if foo was in the Context.

Workarounds

  1. Using IfNullDirective / IfNotNullDirective

  1. Many others are listed at CheckingForNull.

The "set" directive should accept null value as the RHS.

For example: Assuming that $bar wasn't in the Context,

#set ($foo = $bar)
#set ($foo = null)

should both remove "foo" from the Context, and

#set($map.foo = $bar)
#set($map.foo = null)

should both set the "foo" property of "$map" to null.

Workarounds

  1. Setting null by invoking Context#remove(), or setter methods with null.

  1. Using the NullTool / ViewNullTool.

  1. [WWW] Bugzilla #20999 contains a patch to give this behaviour.

  2. It is also stated in bugzilla that you can achieve this by using the [WWW] EventCartridge, but I can't figure out how. I'm hoping somebody will post a code snipplet for us. ;)

The "foreach" directive should set null when the element is null

Currently, it preserves the last element.

For example:

#set ($list = ["one", null, "three"])
#foreach ($foo in $list)
$!foo
#end

should output:

one

three

Workarounds

  1. Using the NullTool / ViewNullTool.

  1. [WWW] Bugzilla #27741 contains a patch to give this behaviour.

null and the empty string should be totally equivalent

Comment from Nathan about the null keyword and the if directive support:

last edited 2005-04-26 18:49:36 by ShinobuKawai