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>

     

  • 相关阅读:
    数据持久化
    计算机中的上下文
    URL
    MVC之Control中使用AOP
    富客户端
    一些术语的解释
    docker mysql 安装
    用C#开发Windows服务
    java 图片文件Base64编码与二进制编码格式互相转换
    Camera打开前置摄像头或后置摄像头
  • 原文地址:https://www.cnblogs.com/Mainz/p/2524392.html
Copyright © 2011-2022 走看看