ftl页面如何获取session

2025-02-23 05:32:57
推荐回答(2个)
回答1:

FreeMarker 获取Session中的值 (2010-08-16 17:04:25)转载
今天做WEB项目过程中,要在FreeMarker的模板文件中(如:registe.ftl),获取Session是的值,来判断是否有用户登录,通常一个Struts2的Action类,完成跳转,跳转到对应的模板文件中。
例如: LoginActon类 有
@Result(name="registe",location="registe/registe.ftl"),
则在registe.ftl 文件中,通常只能取LoginAction中对的属性,有get和set方法,可是怎么取非对应Action中的值呢。
如:
在GoAction类中,把用户登录的信息放入到Session会话中。
session.setAttribute("user", username);

现在在registe.ftl页面中,想取user的值,怎么取呢?

其实,直接就取出来了,如在registe.ftl中可以这样来用,
<#if user?exists>
已经登录的情况下不可以注册新用户,请注销后再执行此操作!
<#else >
可以进行注册!


看来,FreeMarker的功能相当强大,用起来挺方便的。

回答2:

  首先确保session已经开启,其次就是确保的session在标签之前(也就是文件第一行)。
  使用Request里的Attribute值最简单的方法就是直接${AttributeName}或者安全一点:${AttributeName!"default Value"}取Application范围的对象
   <#if Application.myApplicationAttribute?exists>
   ${Application.myApplicationAttribute}