यह समझना महत्वपूर्ण है कि फ्रीमार्कर जानबूझकर उस संदर्भ के ज्ञान के बारे में नहीं जानता है जिसका उपयोग इसे अधिक सामान्य बनाने के लिए किया जाता है। इसका मतलब है कि जेएसपी के विपरीत, इसे डिफ़ॉल्ट रूप से HttpServletRequest और Response ऑब्जेक्ट तक पहुंच नहीं है। यदि आप इसे एक्सेस करना चाहते हैं, तो आपको इसे प्रदान करने की आवश्यकता होगी।
जिस तरह से मैंने हल किया था, वह एक अनुरोध पत्र के रूप में HttpServletRequest ऑब्जेक्ट को जोड़ने के लिए एक सर्वलेट फ़िल्टर बनाना था जिसे Freemarker तक पहुंच है।
/**
* This simple filter adds the HttpServletRequest object to the Request Attributes with the key "RequestObject"
* so that it can be referenced from Freemarker.
*/
public class RequestObjectAttributeFilter implements Filter
{
/**
*
*/
public void init(FilterConfig paramFilterConfig) throws ServletException
{
}
public void doFilter(ServletRequest req,
ServletResponse res, FilterChain filterChain)
throws IOException, ServletException
{
req.setAttribute("RequestObject", req);
filterChain.doFilter(req, res);
}
public void destroy()
{
}
}
आप इसे काम करने के लिए उसके लिए आपको अपने web.xml में यह निर्धारित करने होंगे:
:
<filter>
<filter-name>RequestObjectAttributeFilter</filter-name>
<filter-class>com.foo.filter.RequestObjectAttributeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RequestObjectAttributeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
फिर, मेरी .ftl फाइलों में, मैं निम्नलिखित का उपयोग कर सकते
${Request.RequestObject.getServerName()}
स्रोत
2015-03-25 18:48:26
फ्रीमार्कर के पास पृष्ठ कॉन्टेक्स्ट नहीं है, हालांकि मेरे पास ऑब्जेक्ट का अनुरोध है। मैं उससे होस्टनाम कैसे प्राप्त कर सकता हूं? –