freeMarker Jfinal 获取session里的值

15410年前 (2016-01-12)Jfinal8701

问题:freeMaker session取值的常用格式都试过 session["xxx"],session.xxx 直接xxx 都取不出来?????


解决:

JFinal与Struts2不同,在使用Freemarker作为View的时候,没有自动将session传送至页面使用,原因很简单,为了遵 循restful。如果在项目中使用了session,那么集群就不太方便了,需要想办法对session进行同步才可以。所以JFinal默认是不会去 生成session对象让开发者去使用的。       即便如此,开发者可以通过使用拦截器来轻松添中session到view中使用,JFinal新版本中已经提供了SessionInViewInterceptor来支持这种需求

也可以自己写一个Interceptor即可:


/**
 * 拦截器
 * @author Axhack
 *
 */
public class PublicInterceptor implements Interceptor {
     
    public void intercept(Invocation ai) {
        //向freemarker中传jsp的内置对象
        Controller c = ai.getController();
        c.setAttr("request", c.getRequest());
        c.setAttr("response", c.getResponse());
        c.setAttr("session", new HttpSessionHashModel(c.getSession(), FreeMarkerRender.getConfiguration().getObjectWrapper()));
        ai.invoke();
    }
 
}


在登录或注册的Controller 类 前加代码

@Before(PublicInterceptor.class)调用即可:

例如:

@Before(PublicInterceptor.class)
@ControllerBind(controllerKey = "PersonalCenter", viewPath = "/")
public class PersonalCenterController extends BaseController {
public void personal() {//登录

            PersonalCenterDataResult dataResult = service.register(username, password, pcName, pcPhone, pcAddress, pcIDCard);

            setSessionAttr("PERSONALCENTER",dataResult.getPersonalcenter());

            render("personal.html");
        }}


然后页面

  <#if  session['PERSONALCENTER']??>
            ${session['PERSONALCENTER'].username}
 </#if>

本文原创,转载必追究版权。

分享给朋友:

相关文章

get方式调用http接口   Header赋参数值

get方式调用http接口 Header赋参数值

   /**      195.     * 发送...

jquery 操作html元素(及CSS)

jquery 操作html元素(及CSS)

 $("li").addClass("aui-user-view-cell aui-img") ;  //给元素添加样式$('#a1...

mysql 建存储过程 实例

drop PROCEDURE if EXISTS sp_lasqCREATE PROCEDURE sp_lasq()    COMMENT '超过5天自动立案&#...

Jfinal+Jquery uploadify实现多文件上传实例

Jfinal+Jquery uploadify实现多文件上传实例

包文件外部jar包jfinal-2.0-bin-with-src.jar(JFinal核心包)  fastjson-1.2.7.jar(用于json数据的处理)  cos-26De...

微信小程序如何查找使用

打开微信——点击下方【发现】——最下面找到【小程序】并点击——在搜索框中输入小程序的名称进行搜索 并点击进入即可过如果【发现】中没有【小程序】,直接在搜索框中 输入小程序的名称 ,例如:美团。即可看到...

jquery.PrintArea.min.js实现打印实例

jquery.PrintArea.min.js实现打印实例

 jquery实现的打印功能大致跟浏览器自带的 Ctrl+P的 效果一样 一、效果图:全屏打印:局部打印:二、代码<html>   <head>...

评论列表

好书网
好书网
10年前 (2016-05-18)

[嘻嘻]过来看看

fly
fly
10年前 (2016-05-18)

博主也在研究jfinal?[熊猫]

萨瓦迪卡 回复:
恩 项目在用
10年前 (2016-05-18)
春天快乐
春天快乐
10年前 (2016-05-18)

谢谢分享

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。