2015-10-14 84 views
0

我想要ftl頁面中的當前會話ID。如何獲取FTL中的會話ID

我試了很多東西與Session(HttpSessionHashModel)可用,但沒有能夠得到的ID?

獲取請求標題也是我的工作。

有沒有辦法讓我的FTL中的任何項目?

回答

0

你可以把這個參數放到你的FTL文件中用java servlet。

我認爲你的項目的工作是這樣的:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 

     try 
     { 
      Map dataModel = new HashMap(); 

      dataModel.put("session_id", req.getSession().getId());     

      Configuration cfg = new Configuration(); 

      Template tmpl = cfg.getTemplate("test.ftl"); 

      tmpl.process(dataModel, resp.getWriter()); 
     } 
     catch (TemplateException ex) {    
      throw new IOException(ex); 
     } 

    } 

文件test.ftl爲

<html> 
<head></head> 
<body> 
    <p> ${session_id!""} </p> 
</body> 
</html> 
+0

我知道這僅僅是一個例子,但是你仍然可以指出帽子的「配置」應該是單身,因此對於每個請求都不會被重新實例化。因爲,人們喜歡複製解析... – ddekany

0

FreeMarker的不公開默認情況下任何東西。它甚至不知道什麼是servlet。所以它取決於您正在使用的Web應用程序框架。 (除非,您正在使用freemarker.ext.servlet.FreeMarkerServlet。)或者,您可以直接將它們放入數據模型中。

+0

但我是用戶freemarker servlet和HttpRequestHashModel可作爲請求。我可以從中獲取會話或請求標頭嗎? –

+0

不,「FreemarkerServlet」只公開會話屬性。您可以擴展'FreemarkerServlet'並覆蓋'createModel'以通過'AllHttpScopesHashModel.putUnlistedModel'將該會話ID添加到'super.createModel'的返回值中。 – ddekany