JFinal 扩展

1.扩展Jfinal(jfinal-3.4):(JFinal 极速开发 官方网站,详细说明都有 )

平时自己处理项目遇到的一些问题,对jfinal进行了部分扩展,方便项目使用.

1) JFinalConfig扩展:

JFinalConfig子类需要实现六个抽象方法

public class DemoConfig extends JFinalConfig {

public void configConstant(Constants me) {}

public void configRoute(Routes me) {}

public void configEngine(Engine me) {}

public void configPlugin(Plugins me) {}

public void configInterceptor(Interceptors me) {}

public void configHandler(Handlers me) {}

}

我主要扩展了configRoute中的功能:

原先 添加路由都是使用 :me.add("/hello",HelloController.class,"/hello"); 分别对应/hello路径

但是这样会有一个问题就是如果我需要其他额外的地址(比如我需要一个/user路径),这个时候需要在代码中在添加 me.add("/user",**.class,"/user");

如果有多个目录路径则需要代码中加入,这样对于我这么一个偷懒的人来说太痛苦了,我的原则是越方便越好,无需做多余步骤,即可动态化处理。

于是我动了动态化处理这方面的操作,于是我改造了这部分代码如下():

 

jfinal启动前,可以调用addRoute方面将路由设置,启动即可。

web.xml中配置

 

可以在EmContentExtListener中读取配置文件,调用addRoute来设置(这样以后可以无需修改代码即可添加路由页面,具体代码不表。。。)

2. web服务运行中,动态化添加某个路由:

比如原先已有一个controller( WebActionController ),访问地址 /WebAction/page/addRoute?action=/NewAction&pagefolder=/NewActionFolder (动态添加一个路由)

//传入参数 action=/NewAction&pagefolder=/NewActionFolder

WebActionController 中的部分代码:

 

添加路由打制这个代码,此时添加后,还无法进行/NewAction/page/***链接访问,因为还未进行jfinal的刷新。

Jfinal刷新路由需要进行两个步骤:

 

此时代码方面的刷新已经可以了,但是如果你直接访问地址时,还是会提示未访问到页面404错误,这个问题困扰了我很久,我debug了很久后来找到Filter中才发现问题:

 

其中的代码:init中: handler = jfinal.getHandler();

这个时候你会发现,只有初始化的情况下才加载handler,而当路由进行更新的情况下handler没有进行更新(routes没有更新)导致请求地址无效,故需要代码进行下处理来刷新下该Filter下的handler,

于是我加了一个判断是否需要更新的功能:

当进行jfinal地址访问时,如果地址结尾为_reload_filter_handler,则进行handler的重新读取,来刷新handler,这样就刷新了handler(jfinal的路由也刷新了),既可以进行新添加路由的地址访问:/NewAction/page/pageview.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值