Java Freemarker模板错误:null或缺少
我认为这意味着在生成模板时数据是空的,但很明显不是空的。我不知道这是怎么回事。下面是我的模板文件。Java Freemarker模板错误:null或缺少,java,rest,templates,freemarker,spark-framework,Java,Rest,Templates,Freemarker,Spark Framework,我认为这意味着在生成模板时数据是空的,但很明显不是空的。我不知道这是怎么回事。下面是我的模板文件。 loginform.ftl FreeMarker template error: The following has evaluated to null or missing: ==> data [in template "result.ftl" at line 2, column 8] FTL stack trace ("~" means nesting-related):
loginform.ftl
FreeMarker template error:
The following has evaluated to null or missing:
==> data [in template "result.ftl" at line 2, column 8]
FTL stack trace ("~" means nesting-related):
- Failed at: #list data as key, value [in template "result.ftl" at line
2, column 1]
----
城市名称:
说明(2个字母格式):
result.ftl
<form action= "/select" method= "POST" accept-charset="utf-8">
City Name: <input type= "text" name = "city">
State(2 letter format):<input type= "text" name = "state">
<input type= "submit" id = "submitButton">
</form>
${key}=${value};
错误消息是正确的。在Java代码中,数据
用作数据模型根。根本身不是顶级变量,而是顶级变量的容器。例如,${Hello}
可以工作,并打印“您的notnull!”。(还请注意,“数据”只是一个局部变量名,在Java编译过程中会消失,您永远不会将“数据”变量名传递给FreeMarker。)因此,您应该创建一个根映射(或bean),将数据映射(或bean)放入其中,并将根传递给模板。过程
更新:也就是说,现在您有了temp.process(数据、写入程序)代码>,您应该具有:
<html>
<#list data as key, value>
${key} = ${value};
</#list>
</html>
Map root=newhashmap();
root.put(“数据”,data);
临时进程(root、writer);
但当我尝试对地图数据中的所有键进行排序时,这是否有帮助?列表属性是否仍然只在数据映射中的键和值中运行?好吧,您在那里有
,那么如果没有数据,它还会列出什么?我很确定这种混乱是从哪里来的。也许你认为“数据”这个名字很特别?不是。它可以是“苹果”或任何东西。在根Map
中,您可以有任意多个Map
-s(和List
-s,String
-s,等等),当然每个都有不同的名称。没问题。我得到了它。我马上就发布答案。
<html>
<#list data as key, value>
${key} = ${value};
</#list>
</html>
Map<String, object> root = new HashMap<>();
root.put("data", data);
temp.process(root, writer);