路由能不能支持/a/b/c/d,其中b,c,d是可变参数

老项目改造,以前路由这样传参的,JFinal有没有啥方法可以支持下

评论区

JFinal

2018-08-13 11:53

用 Handler 转换一下,转成 jfinal 路由支持的 /a/b-c-d 即可

在 com.jfinal.ext.handler 中有一些 handler 的便子,本质就是改变一下 target 参数,然后用转换后的 target 去找 action,大致:
public void handle(String target, ....) {
target = 转换成jfinal支持的路由(target);
next.handle(target, ...);
}

wesleyxw

2018-08-13 12:29

按詹总方式解决:
public class MyUrlHandler extends Handler {
@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
if (target.startsWith("/agent/")){
String[] split = target.split("/");
if (split.length == 5 && StringUtils.isNumeric(split[3]) && StringUtils.isNumeric(split[4])){
next.handle("/agent/"+split[2]+"-"+split[3]+"-"+split[4], request, response, isHandled);
return;
}
}
next.handle(target, request, response, isHandled);
}
}
//Config里面configHandler方法添加
@Override
public void configHandler(Handlers me) {
me.add(new MyUrlHandler());
}

JFinal

2018-08-13 13:42

@wesleyxw 感谢回来分享, handler 可以实现那些更加底层的功能,在拦截器以及 controller 实现不了功能时,用 handler 可以解决

热门反馈

扫码入社