[英]Expression is undefined when try to call java method in Freemarker
我嘗試從Freemarker模板調用Java方法:
我的數據類:
public class SimpleObject {
private String id;
private String name;
public SimpleObject(String id, String name) {
setId(id);
setName(name);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我的服務等級:
public class MainService {
List<SimpleObject> getAll() {
SimpleObject so = new SimpleObject("1", "Maksim");
List<SimpleObject> sol = new ArrayList<SimpleObject>();
sol.add(so);
return sol;
}
}
轉換代碼:
MainService ms = new MainService();
Map<String, Object> root = new HashMap<String, Object>();
root.put("results", ms.getAll());
StringWriter out = new StringWriter();
Configuration cfg = new Configuration();
cfg.setObjectWrapper(new DefaultObjectWrapper());
Template temp = cfg.getTemplate(".test.ftl");
temp.process(root, out);
System.out.println(out.getBuffer().toString());
.test.ftl
<#list mc.getAll() as result>
result.getName()
</#list>
錯誤:
Expression mc is undefined on line 3, column 8 in .test.ftl.
The problematic instruction:
----------
==> list mc.getAll() as result [on line 3, column 1 in .test.ftl]
----------
這是因為在您的模型root
中沒有mc
。
在這種情況下,由於您將results
放入root
而不是在freemarker中調用mc.getAll()
,因此可以使用root
所以
<#list restults as result>
或者您需要使用鍵mc
將MainService
實例ms
添加到模型( root
)中
Map<String, Object> root = new HashMap<String, Object>();
root.put("mc", ms);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.