freemarker如何访问cookie?


spring 中配置如下:


 <bean id="freemarkerConfigurer"
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/"/>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">10</prop>
                <prop key="classic_compatible">true</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
                <prop key="date_format">yyyy-MM-dd</prop>
                <prop key="time_format">HH:mm:ss</prop>
                <prop key="number_format">#</prop>
                <prop key="whitespace_stripping">true</prop>
                <prop key="boolean_format">true,false</prop>
            </props>
        </property>       
    </bean>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".ftl"/>
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <property name="exposeRequestAttributes" value="true"/>
        <property name="exposeSessionAttributes" value="true"/>
        <property name="exposeSpringMacroHelpers" value="true"/>
        <property name="requestContextAttribute" value="request"/>
    </bean>

百度的代码不能工作:


 <#assign cookies = request.getCookies()>
<#list cookies as cookie>
<#if cookie.name = "userName">
${cookie.name}
${cookie.value}
</#if>
</#list>

问题是这样:
我需要取一个cookie值添加到所有的ftl页面的变量中。
如果从spring mvc的controller中取再传到model中,每个@RequestMaping的method中都得要这样做,非常麻烦。
freemarker的共享变量配置,看例子都是配置静态值,这样需要从其它地方读并且解析的,怎么处理?

我也尝试过自定义ObjectWrapper,但似乎没搞懂这个ObjectWrapper是怎么工作的,和Velocity有些差别。

spring java freemarker

超级点钞机 10 years, 11 months ago

你这段代码也没有错,关键是需要先在后端的controller里面 set 了,你在页面上才能 get 取得到,不然就是空啊。

Wiike answered 10 years, 11 months ago

cookie这个变量是要从控制器获得,传入模板的

Mirai answered 10 years, 11 months ago

Your Answer