2018-09-19 17:22

@netwild 这其实是个权衡问题,要加这个功能也就一两行代码的事,极其容易

但是,jfinal 是极度追求性能的,如果对所有 sql 都去判断一下是不是有分号结尾,然后做个切分,这个多少会拉低一点性能

然后再考虑一下这种情况出现的概率,jfinal 诞生七年多,开源六年多,一共有两个人反馈过这个问题,为了响应两个人的需求,而去切分 sql,这个显然不划算

然后再从合理性方面考虑, jfinal 的数据库操作仅仅是对 JDBC 的一个极薄封装,在总体设计上是尽全力保持与 JDBC 的一致性,用户传入的 sql 与 para 都是原封不动扔给底层的 JDBC。如果判断分号并做切分这个显然不符合 jfinal 一贯的设计理念,JDBC 本身不支持这样的 sql, jfinal 并没有太多理由要去支持

用户的需求是多样化的,永无止尽的,jfinal 如果要去满足所有需求一定会变得学习成本极高、体积极大,最终会变得谁的需求都满足不了

所以关键就在于根据设计、成本、概率等等因素,做权衡取舍

2018-09-19 17:12

这个肯定不是 template engine 慢,模板全都是解析后缓存的,性能远比 JSP、Freemarker、Velocity 要快得多

估计是数据库连接的问题,长时间没有请求发出,数据库可能会关闭连接

2018-09-19 11:23

一定要分清指令、共享方法的区别,前者前方带个字符 '#', 后者在表达式中使用

2018-09-19 11:22

#para(...) 这个是指令,不是 shareMethod,只有 sharedMethod 才可以这么用:
#if ( methodName(...))

建议先多看看文档,既节省你的时间,又节省大家时间,都是文档中说得清清楚楚的问题,其中有红色字体早就告诉了你想要的这个功能

2018-09-19 11:20

对 quartz 不熟,我们都用的 cron4j,这个只能控制到分

反馈错误发到了分享频道,过后会删除,请知悉

2018-09-19 00:44

取决于你的 sql 在分页方法之下是不是正确,看一下文档 paginate 的第 5 小节《常见问题解决》:
http://www.jfinal.com/doc/5-6

2018-09-18 17:45

如果是客户端发来的参数,早就被解析并放入 request 对象之中了,完全无需理会即可在 controller 中直接获取:
getPara(...);

如果想临时额外带点自己的参数(与客户端参数无关),可以使用 urlPara 来传,也可以使用 request.setAttribute(...) 来传

前者基本用法:
target = ... + "/p0-p1-pn"
参考一下 jfinal 文档中的 urlPara 规则即可

后者的基本用法:
request.setAttribute("key", value);
controller 中取值:
getAttr("key");

2018-09-18 17:33

分享频道只能发布分享文章,这个贴子过后会被删除,请知悉

此外,猜不到在表达式什么? 完全不像是在提问,更不是在分享

2018-09-18 16:45

完全忘掉 jfinal , 只需去找一下 Jetty 与 tomcat 的嵌入式启动方式即可,大概 20 到 50 行代码就可以了

大致就是将原来通过 web.xml 配置的 JFinalFilter 改用手动写代码的方式即可,jetty、tomcat 都有手动 addFilter 的方法

jfinal 是符合 java web 规范的标准 java web 项目,所以你懂的

2018-09-18 11:21

new Customers().getStr("FullName") 这行代码是在干什么? 获取一个不存在的值?

没有查询数据库怎么可能出现 sql 语句?

建议先回炉学习一下 Java 基础,少走弯路,节省大量时间

2018-09-18 09:57

@天朝子民 你用的 fastjson,这个工具还有注解可以用在 getter 方法上,细粒度控制转换格式,看一下 fastjson 的官方文档

2018-09-17 20:31

这个功能原本是让修改的 java 代码立即生效,从而 jfinal 监听了 class path 目录下面的文件被修改动作

你的 .sql 文件正好在 class path 下面也有一份,所以也被监听到了

这个只是在开发模式下,开发阶段才会有的,生产环境部署后不会的

2018-09-17 20:29

默认是全局配置,但也可以临时指定自己的配置,例如:
FastJson.getJson().setDatePattern("yyyy-MM-dd").toJson(list);

上面的代码,直接使用 FastJson 并配置好日期格式,再进行转换

同理,其她两个实现也类似:
JFinalJson.getJson().setDatePattern("yyyy-MM-dd").toJson(list);
Jackson.getJson().setDatePattern("yyyy-MM-dd").toJson(list);

2018-09-17 20:25

很可能是客户端没有支持 cookie, java web 规范的 Session 实现是依赖于 cookie 的

2018-09-17 20:24

问题是什么?