ofbiz中的FreeMarker中一些全局变量的区别

最近在做ofbiz相关开发,其中的web表现层是用bsh+freemarker实现的,碰到一个问题,是要在全站的范围内记录用户选择的某信息到一个Map里面去,一开始不知道session scope的变量和request scope的attribute已经parameter的区别,搞了挺长时间,后来慢慢摸索出了一点门道,总结如下,有对这部分精通的童鞋帮忙看看是不是有总结的不对的地方。

  • session

在servlet的session中设置的变量,是会跨越整个会话的,如果是需要在整个会话过程中都保留的参数,需要使用session变量,使用语法:

 

在bsh脚本中使用如下语法进行设置

 

session.setAttribute("Name", "tristan")

 

 使用如下语法进行读取

 

session.getAttribute("Name")

 

这种语法设置的session scope的变量,在ftl文件中可以使用下述语法进行读取

 

 

${Session.Name} 
  • request的attribute

request中的attribute,在程序里面可以这样进行设置:

 

request.setAttribute("Name","Tristan");

 

可以这样读取

 

request.getAttribute("Name")

 

在freemarker里面引用的语法为

 

 ${requestAttributes.Name}
  • request 中的 Parameter

Parameter是通过servlet的url-pattern中的?Name=value的形式传递进入程序的,在bsh文件中通过

 

 

request.getParameter("Name");

 

取得。使用如下语法进行设置

 

request.setAttribute("Name", "Tristan");

 

在ftl文件中可以通过

 

${RequestParameters['test']}

 

或者

 

${RequestParameters.test}

 

的方式取得。

  • context

context上下文中的变量,在程序中进行设置的语法为

 

context.put("Name", "Tristan");

 

然后可以直接在对应的ftl文件中中通过如下的方法使用,这个context中的变量是只对这一组解析前运行了相应bsh脚本的ftl文件有效的。

 

${Name} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值