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, 3 months ago

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

Wiike answered 10 years, 3 months ago

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

Mirai answered 10 years, 3 months ago

Your Answer