3.1 Web提供的全局变量
About 460 wordsAbout 2 min
2021-03-27
3.1 Web提供的全局变量
Web集成模块向模板提供web标准的变量,做如下说明
- request 中的所有attribute.在模板中可以直接通过attribute name 来引用,如在controller层 request.setAttribute("user",user),则在模板中可以直接用${user.name} .
- session 提供了session会话,模板通过session["name"],或者session.name 引用session里的变量.注意,session并非serlvet里的标准session对象。参考servlet来获取HTTPSession。
- request 标准的HTTPServletRequest,可以在模板里引用request属性(getter),如${request.requestURL}。
- parameter 读取用户提交的参数。如${parameter.userId} (仅仅2.2.7以上版本支持)
- ctxPath Web应用ContextPath
- servlet 是WebVariable的实例,包含了HTTPSession,HTTPServletRequest,HTTPServletResponse.三个属性,模板中可以通过request,response,session 来引用,如 ${servlet.request.requestURL};
- 所有的GroupTemplate的共享变量
- pageCtx是一个内置方法 ,仅仅在web开发中,用于设置一个变量,然后可以在页面渲染过程中,调用此api获取,如pageCtx("title","用户添加页面"),在其后任何地方,可以pageCtx("title") 获取该变量。(仅仅2.2.7以上版本支持)
你可以在模板任何地方访问这些变量
如果你需要扩展更多属性,你也可以配置beetl.properties配置文件的WEBAPP_EXT属性,实现WebRenderExt接口,在渲染模板之前增加自己的扩展,如:
RESOURCE.root=/WEB-INF/views
WEBAPP_EXT = com.park.oss.util.GlobalExt
public class GlobalExt implements WebRenderExt{
static long version = System.currentTimeMillis();
@Override
public void modify(Template template, GroupTemplate arg1, HttpServletRequest arg2, HttpServletResponse arg3) {
//js,css 的版本编号
template.binding("sysVersion",version);
}
}
这样,每次在模板里都可以访问变量sysVersion了,不需要在controller里设置,或者通过servlet filter来设置
对于Web框架,你可以利用Filter等机制设置模板需要的公共变量,是个更值得推荐的办法