2019-12-25 12:52

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");

2019-12-24 20:44

我的收藏中有这么几个:
https://jfinal.com/share/1455
https://jfinal.com/share/356
https://jfinal.com/share/347

希望对你有帮助

2019-12-24 16:36

@程序员是真的雷 下载首页的 jfinal_demo_for_maven.zip , 用上里头的 log4j.properties 配置文件,放入自己的项目中,然后有异常就可以输出并看到了

异常信息是解决问题最有用的信息

2019-12-24 16:12

根据异常提示找原因,不要着急

2019-12-24 14:13

LoggerFactory.getLogger 这里要改成使用 jfinal 的 log :
Log log = Log.getLog(...);

上面只是一个问题,我不排除还会碰到别的问题,例如配置上的问题,pom.xml 依赖引入的事

2019-12-23 21:32

通过拦截器实现限时重复提交,学习成本更低,逻辑上更清晰,是个好办法,这个创新挺不错,必赞

2019-12-21 21:18

去 maven 库下载:
https://mvnrepository.com/artifact/com.jfinal/jfinal-weixin

2019-12-21 18:14

@VG-NO1 有异常抛出,配置成 warn 或 error 就可以有输出,没有异常信息是没法解决问题的

2019-12-21 16:40

好久没有用 freemarker 了,忘了怎么格式化输出数字类型了,我记得它是可以指定小数点位数的,找找它的官方文档

jfinal enjoy 对此的用法是:
#number( value, "#.##")

2019-12-21 16:38

下载首页的 jfinal_demo_for_maven.zip,将里头的 log4j.properties 文件用上,这样才能在控制台输出异常信息,根据异常信息解决问题

光是看到 internal Server Error 是无法判断原因的

2019-12-20 23:14

虽然不是 jfinal 类型项目,但可以用于 jfinal weixin 开发的本地调试,赞一个

2019-12-20 21:57

@xasyulwx 要看是什么错误,添加了这个配置,错误应该不是上述那种了

2019-12-20 13:00

@idreamblue 在这个贴子里不断追加你的改进代码,我仍然不太知道你讲的方案

2019-12-20 12:59

这里只需要注意优先调用一次 getFile(),然后额外参数的获取方式与原来的完全一样了

要注意一个问题,如果有拦截器的话,拦截器也有获取参数的话,也需要注意先调用:
inv.getController().getFile();

建议改成下面的方式,更好解决:
public void upload(File file, Striing paraentId) {
...
}

注意这里用到了 action 参数注入,需要开启 JDK 的 parameter 参数,见文档:
https://jfinal.com/doc/3-3

用起来挺方便的