首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
configRoute中如何配置动态路径?
liugz
2019-12-25 09:45
最近在做微信平台方面的开发,微信推送的消息格式如下:
www.abc.com/$APPID$/callback?nonce=xxx
但$APPID$这个值是动态的,那么jfinal中如何配置呢?
项目:
JFinal
评论区
zeroabc
2019-12-25 11:31
https://jfinal.com/doc/2-7
回复
liugz
2019-12-25 11:55
@zeroabc
目前是自己写了handler实现的。
回复
JFinal
2019-12-25 12:49
jfinal 路由不支持这种风格,可以改成下面的几种形式来解决,任选一种:
1:www.abc.com/callback?nonce=xxx&appid=APPID
2:www.abc.com/callback/$APPID$?nonce=xxx
如果这个 url 风格是被强制要求不能改变的,也可以通过一个 handler 来转换去实现你要求的功能,这里只给出一个演示代码,你自己根据具体需求修改一下:
public class CallbackUrlHandler extends Handler {
public void handle(String target , HttpServletRequest req, HttpServletResponse res, boolean[] isHandled) {
if (target.endsWith("/callback")) {
String APPID = target.substring(0, target.indexOf("/callback");
target = "/callback" + APPID;
}
next.handle(target, req, res, isHandled);
}
}
上面代码的主要逻辑就是将 /$APPID$/callback 的形式转化成 /callback/$APPID$ 的形式
在 controller 中通过下面的代码可以获取到 APPID 值:
String appId = getPara();
通过下面的方法可以获取 nonce 值:
String nonce = getPara("nonce");
回复
JFinal
2019-12-25 12:52
jfinal 这么设计路由有很多考虑,比起你需要的那种路由有很多优势。具体原因,以往谈论过很多,就不再重复
没有完美的设计,只有利弊权衡之后的选择
回复
liugz
2019-12-25 13:06
@JFinal
目前是自己写的handler,代码和波总您提供的代码类似。
这个主要是微信有个接口推送过来的格式是这样子,没办法。
我们自己开发程序用jfinal路由问题不大,主要是腾讯弄这种动态的url推送数据,就挺蛋疼
回复
liugz
2019-12-25 13:26
@JFinal
另外再请教下 www.abc.com/callback/$APPID$?nonce=xxx 这种格式,
那configRoute中可以这么配置:me.add("/callback", WeixinMsgController.class) 吗 ?
我测试了无效
回复
JFinal
2019-12-25 13:59
@liugz
路由配置还是原来的配置方法, 在 handler 中的 String target 变量就是 url 中去除掉域名、问号挂参后的剩余部分
通过改变 target 参数,让其可以对应到 controller 的 action 就可以了,对 handler 进行单步调试一下
回复
发送
我要反馈
热门反馈
扫码入社