我想要ftl頁面中的當前會話ID。如何獲取FTL中的會話ID
我試了很多東西與Session(HttpSessionHashModel)可用,但沒有能夠得到的ID?
獲取請求標題也是我的工作。
有沒有辦法讓我的FTL中的任何項目?
我想要ftl頁面中的當前會話ID。如何獲取FTL中的會話ID
我試了很多東西與Session(HttpSessionHashModel)可用,但沒有能夠得到的ID?
獲取請求標題也是我的工作。
有沒有辦法讓我的FTL中的任何項目?
你可以把這個參數放到你的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>
FreeMarker的不公開默認情況下任何東西。它甚至不知道什麼是servlet。所以它取決於您正在使用的Web應用程序框架。 (除非,您正在使用freemarker.ext.servlet.FreeMarkerServlet
。)或者,您可以直接將它們放入數據模型中。
但我是用戶freemarker servlet和HttpRequestHashModel可作爲請求。我可以從中獲取會話或請求標頭嗎? –
不,「FreemarkerServlet」只公開會話屬性。您可以擴展'FreemarkerServlet'並覆蓋'createModel'以通過'AllHttpScopesHashModel.putUnlistedModel'將該會話ID添加到'super.createModel'的返回值中。 – ddekany
我知道這僅僅是一個例子,但是你仍然可以指出帽子的「配置」應該是單身,因此對於每個請求都不會被重新實例化。因爲,人們喜歡複製解析... – ddekany