为什么我在传递给freemarker的哈希映射上获得null值,当它不为null时?

时间:2017-05-29 00:09:19

标签: java freemarker

{
  "id": 42,
  "title": "Hello world!",
  "body": "This is stored in SQLite!",
  "createdAt": "2017-05-28T23:19:41.738Z",
  "updatedAt": null
}

以上是我正在开发的Spark应用程序的主要方法。它涉及两个模板,loginform.ftl和result.ftl。 Loginform.ftl是一个简单的html表单,它向服务器发送一个post请求,该请求由上面代码中的post处理程序处理。当我填写表单并发送请求时,我收到500内部服务器错误。该错误与result.ftl有关,现在,我正在使用它来测试模板制作。我将HashMap传递给result.ftl模板。我得到的错误是:

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;

     });

}

我认为这意味着在生成模板时数据为空,但很明显不是。我不知道这是怎么回事。我的模板文件如下 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]
---- 

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>

0 个答案:

没有答案