我也遇到了这个问题,我能够根据Nathan Bubna 的回答来解决它。
我只是想完成提供Velocity 文档链接的答案,该文档解释了如何使用 EventHandlers。
就我而言,每次插入引用时,我都需要为 gson 库中的所有 JsonPrimitive 对象调用 Velocity 调用“getAsString”而不是 toString 方法。
就像创建一个
public class JsonPrimitiveReferenceInsertionEventHandler implements ReferenceInsertionEventHandler{
/* (non-Javadoc)
* @see org.apache.velocity.app.event.ReferenceInsertionEventHandler#referenceInsert(java.lang.String, java.lang.Object)
*/
@Override
public Object referenceInsert(String reference, Object value) {
if (value != null && value instanceof JsonPrimitive){
return ((JsonPrimitive)value).getAsString();
}
return value;
}
}
并将事件添加到 VelocityContext
vec = new EventCartridge();
vec.addEventHandler(new JsonPrimitiveReferenceInsertionEventHandler());
...
context.attachEventCartridge(vec);