我有一个速度模板,其中有一条线,如下所示:
$person.names.get(0).FullName
问题是,如果
names
为null,或者get(0)
返回null,则将其计算为$person.names.get(0).FullName
相反,我希望它打印不带引号的“”。有没有一种方法可以配置Velocity以这种方式工作?我不想将我所做的每一件事都包装在
#if (x != null && x.somethingElse != null ...)
...
#end
我一直在查看mustache,并且默认情况下它似乎以这种方式工作。
最佳答案
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);
索引超出范围仍然会出现错误。我觉得没有办法避免这种情况。如果有人能找到解决方法,我会很乐意将其标记为答案。