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>

     

  • 相关阅读:
    Yii2 使用 Beanstalk 队列系统
    Yii2 注册表单验证规则 手机注册时候使用短信验证码
    Yii2 高级模板 多域名管理问题
    PHP生成缩略图,控制图片质量,支持.png .jpg .gif
    yii2-lock-form 也许这就是你想要的,阻止表单多次提交
    PHP日期与时间戳转换
    PHP/Yii2操作Cookie,常见问题以及注意事项
    对称加密,API加密
    yii2弹出层
    两种不同的Context
  • 原文地址:https://www.cnblogs.com/Mainz/p/2524392.html
Copyright © 2011-2022 走看看