2018-12-07 12:29

先试着做索引,让 count 查询尽可能快,用 explain sql 命令行去分析索引有没有用上

如果索引仍然无法满足性能需求,就需要学点数据库优化的技术,买本 mysql 优化的书学学

2018-12-07 12:25

最外层有 group by , 在 i,j 这两个参数后面要添加 group by 参数:
dao.paginate(i , j , true, ...);

2018-12-06 23:28

#if 中的表达式如果是 false ,自然就有问题,改成下面的形式:

#set( flag = false)
SELECT
a.id,
a.title
FROM
user a
WHERE
#if(t0 != null)
a.tag like '%#(t0)%'
#set(flag = true)
#end
#if(t1 != null)
#(flag ? "OR", "")
a.tag like '%#(t1)%'
#end
order by a.see desc
limit 8


也就是说用一个变量 flag 来表达前一个 #if 是否已经进入过了,才决定后面的 #if 中是否要生成一个 "OR" 出来

其实单步调试看看 getSqlPara 出来得到的 sql 值是什么就能知道问题出在哪里

2018-12-06 20:13

mvn clean package

注意是运行 target 子目录下某个子目录下的 start.bat , 不是运行项目根目录下的 start.bat

2018-12-06 15:54

@gjjtip15 框架部分肯定不会对这种情况做任何限制的

jfinal 的一个理念是,能不干预就不干预,能少做事就决不多做事

我建议你先单步调试找找原因,此外,跨域解决方案有很多,在网上再找找别的方案应该比现在这个还简单

2018-12-06 15:38

@mr_wangyan 自动化同步添加 permission 数据这个功能是核心,在哪都看不到的,具体到权限验证可以猜得到是 actionKey

再一个是 #role、#permission 控制 UI 上的权限

2018-12-06 15:30

@BogBB 打包后,会有一个 lib 目录,该目录下面有一个 jar 包,这个 jar 包里面有你项目中的所有 class 文件,其中就有你的 DemonConfig

如果没有,则配置不对,例如, 打包配置成了 war,而没有配置成 jar,具体的用法在文档中很详细:
http://www.jfinal.com/doc/1-3

上面文档第一行就要求了打成 jar

2018-12-06 15:11

com.thetransactioncompany.cors.CORSFilter 这个 filter 要加上,相关的 dependency 要加上

2018-12-06 11:53

添加下面的一行代码:
UndertowServer.create(...)
.addHotSwapClassPrefix("org.apache.shiro.")
.start();

如果不行的话,再试一下
UndertowServer.create(...)
.addHotSwapClassPrefix("org.apache.")
.start();

shiro 的支持确实有几个人反馈

2018-12-06 11:21

将这个第三方的源码拿到,然后将版本或者将项目名改一下,然后改掉源码中的 bug,再通过下面的命令安装到你本地 maven 库中:
mvn clean install

最后,再让你的项目依赖于这个新的依赖即可。你以前的方式是个定时炸弹,java 的类加载机制先加载哪个 jar 包中的 class 是不确定的,你两个 jar 包中都有相同的 class 存在

当然,如果你嫌麻烦,还可以试一下我以前自创的一个新方法,在你的项目的 JFinalConfig 继承类中的 configConstant 中添加下面一行代码:
getClass().getClassLoader().loadClass(你改掉源码的那个类的在此);

也就是说你的修改的源码处在 JFinalConfig 子类所在的 jar 包之中,通过手动 loadClass(...) 先从这里加载,当然这种方式也可能有风险,你先试一试

2018-12-06 11:15

@你好啊世界 @BogBB 都什么时候了,还折腾 tomcat 和 jetty ,jfinal 官方最新出的 jfinal-undertow 爽得不行:http://www.jfinal.com/doc/1-3

2018-12-05 22:27

由于 undertow 是为嵌入式 server 而生,所以 jfinal undertow 项目是不需要 web.xml 这个文件的

线上这版 Filter、Servelt、Listener、WebSocket 最新的配置方式如下:
UndertowServer.create(AppConfig.class)
.configWeb( builder -> {
// 配置 Filter
builder.addFilter("myFilter", "com.abc.MyFilter");
builder.addFilterUrlMapping("myFilter", "/*");
builder.addFilterInitParam("myFilter", "key", "value");

// 配置 Servlet
builder.addServlet("myServlet", "com.abc.MyServlet");
builder.addServletMapping("myServlet", "*.do");
builder.addServletInitParam("myServlet", "key", "value");

// 配置 Listener
builder.addListener("com.abc.MyListener");

// 配置 WebSocket,MyWebSocket 需使用 ServerEndpoint 注解
builder.addWebSocketEndpoint("com.abc.MyWebSocket");
})
.start();

这个配置方法在源码的 UndertowServer.configWeb(...) 上有。注意,上面的配置版本还未发布到中心库,现在的老版本是通过
UndertowServer.addFilterInfo(...) 来添加的 Filter

建议通过下面的方法直接用上新版本:
git clone git@gitee.com:jfinal/jfinal-undertow.git
cd jfinal-undertow
mvn clean install
注意要先将 pom.xml 中的 skip 标签改成 true 才能安装

最后改一下版本号为 : 1.2-SNAPSHOT 即可用上最新版本

2018-12-04 22:51

功能完善,作者很用心,赞一个

2018-12-04 21:53

jfinal 1.2 这几天正在最后打磨,功能更全面, 代码量更少, 配置更方便,有关 web 组件的配置统一在 configWeb 中来做了,注意升级时 addWebSocketEndpoint 稍改一下:
UndertowServer.create(...).configWeb( builder -》 {
builder.addWebSocketEndpoint(...);
}).start();

方法名都没变,配置的方式稍微变了一下

2018-12-04 16:58

终极方法:单步调试