public static void main(String[] args) throws IOException {
port(8080);
Configuration config = new Configuration(Configuration.VERSION_2_3_26);
config.setDirectoryForTemplateLoading(new File("PATH_NAME"));
get("/test", (req,res) ->{
StringWriter writer = new StringWriter();
Template temp = config.getTemplate("loginform.ftl");
temp.process(null, writer);
return writer;
});
post("/select", (req,res) -> {
String city = req.queryParams("city");
String state = req.queryParams("state");
Map<String, Object> data = new HashMap<>();
data.put("Hello", "Your not null!");
StringWriter writer = new StringWriter();
Template temp = config.getTemplate("result.ftl");
temp.process(data, writer);
return writer;
});
}
以上是我正在開發的Spark應用程序的主要方法。它涉及兩個模板,loginform.ftl和result.ftl。 Loginform.ftl是一個簡單的html表單,它將一個post請求發送給上面代碼中由post handler處理的服務器。當我填寫表單併發送請求時,我收到500內部服務器錯誤。該錯誤與result.ftl有關,目前我正在使用它來測試模板製作。我將一個HashMap傳遞給result.ftl模板。我得到的錯誤是:Freemarker template error:null or missing
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]
----
我把這個意思是說,當模板生成時數據是空的,但它很明顯不是。我不知道這是怎麼回事。下面是我的模板文件。
loginform.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>
result.ftl
<html>
<#list data as key, value>
${key} = ${value};
</#list>
</html>
你介意給一個小例子嗎? –
好的,請參閱更新。 – ddekany
但是,當我試圖對地圖數據中的所有鍵進行排序時,這會對我有幫助嗎?列表屬性是否仍然只通過數據映射中的鍵和值運行? –