zoukankan      html  css  js  c++  java
  • Freemarker和sitemesh中访问session的复杂类型值的方法

    有时候想在sitemesh中访问session的值,而sitemesh又是用freemarker引擎的,所以问题就是如何在Freemarker里面访问session的复杂类型值。如果是自己写的类,基本上在freemarker里面不能类型转换的。还好Freemarker对HashMap的支持还比较好。最后这样处理:

    把hashMap保存到session:

    Map<String, Boolean> values = new HashMap<String, Boolean>();
    values.put("mykey11", true);
    //..... handle values.........
    session.setAttribute("mykey",  values.size() == 0 ? null : values);

     

    在Freemarker使用session:

    <#assign = Session["mykey"]?if_exists >
    <#if v?? >
      <#if v["mykey11"]?if_exists >
        <ul>
            <li>
              xxx
            </li>
        </ul>
      </#if>
    </#if>

    另外,在freemarker的ViewResolver里面要设置exposeSessionAttributes=true:

       <bean id="viewResolver"
            class
    ="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
            <property name="viewClass"
                value
    ="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
            <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" />
        </bean>

     

  • 相关阅读:
    UML_04_时序图
    UML_03_类图
    UML_02_概述
    UML_00_资源帖
    UML_01_画图工具
    SpringCloud_00_资源帖
    Idea_03_常用快捷键
    Idea_02_常用配置
    Idea_01_安装与激活
    Codeforces命令行工具
  • 原文地址:https://www.cnblogs.com/Mainz/p/2524392.html
Copyright © 2011-2022 走看看