Java Freemarker方法无法接受对象作为参数
我正在尝试将Freemarker HashLiteral传递给我的自定义方法,如下所示:Java Freemarker方法无法接受对象作为参数,java,freemarker,Java,Freemarker,我正在尝试将Freemarker HashLiteral传递给我的自定义方法,如下所示: <a href="${href("Item", {"item": item})}">...</a> 即使href方法的正文为空,也会发生这种情况: public TemplateModel exec(List args) throws TemplateModelException { return new SimpleScalar(""); } 谢谢可能是href是模板方
<a href="${href("Item", {"item": item})}">...</a>
即使href
方法的正文为空,也会发生这种情况:
public TemplateModel exec(List args) throws TemplateModelException {
return new SimpleScalar("");
}
谢谢可能是
href
是模板方法模型
而不是模板方法模型
。TemplateMethodModel.exec(args)
中的args
参数是String
-s的列表,因此FreeMarker尝试将值转换为字符串,但只能使用字符串、日期或数字值。因此,只需将其更改为TemplateMethodModelEx
,然后args
将成为TemplateModel
-s的列表,从而接受所有类型的值。可能是href
是TemplateMethodModel
而不是TemplateMethodModelEx
。TemplateMethodModel.exec(args)
中的args
参数是String
-s的列表,因此FreeMarker尝试将值转换为字符串,但只能使用字符串、日期或数字值。因此,只需将其更改为TemplateMethodModelEx
,然后args
将成为TemplateModel
-s的列表,从而接受所有类型的值。方法的定义是什么样的?我已经在问题中添加了href方法。href
方法的定义是什么看起来像?我已经在问题中添加了href方法。
public TemplateModel exec(List args) throws TemplateModelException {
return new SimpleScalar("");
}