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 >

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值