1

我有一个速度模板,其中有这样一行:

$person.names.get(0).FullName

问题是如果names为 null 或get(0)返回 null,则 this 被评估为

$person.names.get(0).FullName

相反,我希望它打印 "" 不带引号。有没有办法配置 Velocity 以这种方式工作?我不想把我做的每一件事都用一个

#if (x != null && x.somethingElse != null ...) 
    ... 
#end

我一直在看小胡子,默认情况下它似乎以这种方式工作。

4

1 回答 1

3
    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);

索引超出范围仍然会有错误。我有一种无法避免的感觉。如果有人能想出办法,我很乐意将其标记为答案。

于 2013-07-26T22:04:02.663 回答