Java 在Velocity中,如何使模板将null、null指针和索引越界异常呈现为空白?

Java 在Velocity中,如何使模板将null、null指针和索引越界异常呈现为空白?,java,null,velocity,mustache,Java,Null,Velocity,Mustache,我有一个velocity模板,其中有一行,如下所示: $person.names.get(0).FullName 问题是,如果names为null,或者get(0)返回null,则会将其计算为 $person.names.get(0).FullName 相反,我希望打印不带引号的“”。有没有办法将Velocity配置为以这种方式工作?我不想把我做的每一件事都用一张纸包起来 #if (x != null && x.somethingElse != null ...)

我有一个velocity模板,其中有一行,如下所示:

$person.names.get(0).FullName
问题是,如果
names
为null,或者
get(0)
返回null,则会将其计算为

$person.names.get(0).FullName
相反,我希望打印不带引号的“”。有没有办法将Velocity配置为以这种方式工作?我不想把我做的每一件事都用一张纸包起来

#if (x != null && x.somethingElse != null ...) 
    ... 
#end
我一直在看,它似乎在默认情况下是这样工作的

    VelocityContext context = new VelocityContext();
    EventCartridge eventCartridge = new EventCartridge();
    eventCartridge.addReferenceInsertionEventHandler(new ReferenceInsertionEventHandler() {
        public Object referenceInsert(String reference, Object value) {
            if (value == null) {
                return StringUtils.EMPTY;
            } else {
                return value;
            }
        }
    });
    context.attachEventCartridge(eventCartridge);
索引超出范围时仍会有错误。我觉得这是无法避免的。如果有人能想出一个办法,我很乐意把它作为一个答案