2018-12-18 17:17

@航程序员 一般情况下 jfinal undertow 的默认打包方式就挺好了, fatjar 一般是 api 型的项目较多

有 web 资源的项目不建议打成 fatjar

2018-12-18 17:11

将这个独立的东东使用下面的命令安装到本地 maven 库:
mvn clean install

然后别的项目要依赖于这个东东,直接添加 dependency 标签就好

当然,你也可以将你的 jar 包发布到 maven 中心库,然后所有人都可以共享了,就像 jfinal 一样

还有一个办法是你在公司安装一个 maven 私服,这样可以放在公网上授权给一部分人使用,具体可以参考 maven 书上的 maven 私服务搭建

2018-12-18 16:58

版本号确实有错误,已改成 1.3,感谢反馈

2018-12-18 16:36

这个不好猜,不知道是啥

2018-12-18 16:35

拦截器里的什么参数? 信息量不足

2018-12-18 16:34

如果上面那行代码还有问题,改成下面这种:
Object para = record.get(primaryKey);
return deleteById(tableName, primaryKey, para);

本质就是让 java 8 能正确识别参数,不去将 para 当成数组,而是当成 Object

2018-12-18 16:31

这个地方 jfinal 没有改变过,是 Java 8 对于这类参数的行为有变化,看一下源码可知道这里并没有变过

解决办法如下:
1: 做一个 public MyDbPro extends DbPro ,并且覆盖掉你碰到问题的这个 delete 方法,将其中的:
return deleteById(tableName, primaryKey, record.get(primaryKey))
改成下面的代码:
return deleteById(tableName, primaryKey, (Object)record.get(primaryKey))

2:做一个public class MyDbProFactory implements IDbProFactory,内部代码如下:
public DbPro getDbPro(String configName) {
return new MyDbPro(configName);
}

3:将你自己的 MyDbPro 切换上去:
activeRecordPlugin.setDbProFactory(new MyDbProFactory());

记得搞定后回来再反馈一下,然后我可以将这个功能做到 jfinal 3.6 中去,感谢反馈

2018-12-18 16:22

@htjtj5 最简单便捷的方式是通过下面的方法:
拦截器中:inv.getController().setAttr("access_token", ...);

然后控制器中:getAttr("access_token");

还可以让控制器的方法带参:
public void index(String access_token) {
这里可直接使用 access_token 值
}

然后拦截器中这么来传递值:
inv.setArg(0, access_token);

上面这种用法看一下,action 带参功能如何使用:https://www.jfinal.com/doc/3-3

当然,还有很多其它办法,例如弄一个 BaseController,里头弄个 protected String access_token,然后在拦截器中将数据直接赋值给它

2018-12-18 01:53

具体报什么错误? 可能有笔误,还请提出来

2018-12-17 23:45

原因是什么呢?

2018-12-17 23:43

@badouyuren 改 devMode 为 false 以后无法支持热加载,建议还要要通过 undertow.hotSwapClassPrefix 配置来搞定,记得一定要再反馈给我,Lucene 场景的热加载支持目前只有你这里有

2018-12-17 18:04

为什么不通过 inv.getController().getPara("access_token"); 去拿到值

添加 @Para 参数也可以做到:
Para para = inv.getMethod().getAnnotation(Para.class);
if (para != null) {
Object value = para.value();
}

2018-12-17 17:47

这个操作相当溜,赞

2018-12-17 15:43

这里面是纯 sql ,按 mysql 的官方文档来,异常提示你的 sql 有注入行为,配置一下 druid

因为 druid 默认对 sql 做了一些安全防护,有某些形式的 sql 会被拦截,例如 union all 就会被拦截

具体配置,查一下 druid 的官方文档

2018-12-17 15:41

@dbcmoas 开启热加载,让项目热加一次就好