2019-06-19 23:40

@canca 按照这个贴子的方法解决:
http://www.jfinal.com/feedback/5985

也就是说使用还未发布的 jfinal 4.3 版本解决,记得反馈给我结果

现在正是发布前夕,所以特别需要这类碰到问题的案例,确保发布的版本兼容性最高

2019-06-19 22:57

只要配置好,默认应该是打包进去的

如果没打包进去,调整一下 package.xml 中有关复制文件的配置,可配置复制任意地方的配置到打包的目标中去

package.xml 中有注释,里面放上了该打包插件的官方链接,可以找到如何配置复制外部文件的办法

2019-06-19 22:55

建议加入俱乐部,获取本社区源码,这里头的代码是最佳实践。你会发现有了业务层,其它业务之间是穿插调用的,逻辑十分清晰

没有业务层是做不到这一点的

2019-06-19 22:55

无论多小的项目都要有业务层

首先添加一个业务层是顺手的事情,并没有多少工作量,因为 jfinal 的业务层在不需要抽象的时候,不建议创建接口抽象类之类的东东,十分轻量级

其次,业务层在添加之初你可能并没有感到什么好处,甚至会感到工作量反而增加,但是随着开发的推进,你会发现后续的开发工作可以不断调用以前开发好的业务层的 API 来组合式实现功能。从而大大减少工作量,提升开发效率

最后,数据结构是应用的底层核心,业务层是应用的上层核心,而应用其它的部分全都只是辅助作用,包括 model 也只是起一个承载数据的作用。所以当业务发生变化时,业务层的存在可以提升可维护性

2019-06-19 18:06

总结就是,确保是标准的 maven 项目, 此问题与 jfinal 无关,纯粹是 maven 使用问题,因为 jfinal 项目是标准的 maven 项目

2019-06-19 18:06

@白世伟 从项目代码和结构来看是对的,没有什么问题,很可能是你项目创建或者导入的时候有问题

解决办法如下:
1:确保项目是标准的 maven 结构

2:将项目从 eclipse 中删除。注意删除时 "不要勾选" Delete project content on disk。 也就是说不是真删,而只是将项目从 eclipse 左侧的目录中删除出去

3:从资源管理器中找到项目,删掉项目中的所有文件,只保留 src 目录以及 pom.xml 文件,注意隐藏文件也要删干净。这一步本质是删掉 eclipse 为你的项目生成的一些乱七八槽的配置之类的文件

4:重新导入 maven 项目,让 eclipse 重新为你生成项目的各种配置文件。注意导入的关键在于:一定要选择 Existing Maven Projects 进入导入向导,否则生成的项目配置并不是标准的 maven 配置

5:运行项目打完收工

2019-06-19 17:58

调用过 dao()方法的 model 对象只能用于查询,不能用于修改,直接使用

你的 Db.use(this._getConfig().getName).update(...) 用法有误,改成:
Db.update(...) 即可

2019-06-19 17:57

#set( append = "&key=123" + "&name=" name)
#@paginate(.....)

2019-06-19 17:44

假定你的继承类是: public class MyServer extends UnderServer,最后的用法如下:
MyServer server = new MyServer();
server.start(...);

2019-06-19 17:44

@124653847atqq.com 目前最好的解决办法是通过继承 UndertowServer 并覆盖掉父类中的 configHttp() 方法,然后照抄里头的代码,仅仅去掉下面这行代码:
pathHandler = new SetHeaderHandler(pathHandler, "Server", "JFinal");

当然,你也可以改掉这行代码,配置成自己喜欢的 Server name

2019-06-19 17:41

@whjjjjjj 将表达式当成 java 来用,很方便就解决了,口诀就是:有方法就调,有值就取

2019-06-19 17:41

jfinal enjoy 引擎功能极其强大,提供了各种扩展通道,稍微了解一点点代码,解决各类需求极其便利,用不着改代码,用扩展来实现最优雅

2019-06-19 17:39

当然,你也可以不用继承 FieldGetters.GetterMethodFieldGetter,而是继承 FieldGetter,稍多一点代码,不仅要实现 public FieldGetter takeOver(Class targetClass, String fieldName) 方法

还要实现 public Object get(Object target, String fieldName) 方法

2019-06-19 17:38

这个问题最简单的办法就是扩展 FieldGetter ,做一个 MyFieldGetter,大至如下:
public class MyFieldGetter extends FieldGetters.GetterMethodFieldGetter {
...
}

然后在里头填上你自己改进过的 takeOver 方法,最后配置一下:
Engine.addFieldGetter(1, new MyFieldGetter());

注意添加的时候,第一个参数很重要,这个关系到优先级,你的 MyFieldGetter 优先级要高于 GetterMethodFieldGetter,对于 jfinal 4.2 来说传入 1 即可,因为优先级最高的 0 为:RealFieldGetter

你的这个 MyFieldGetter 要配置在 RealFieldGetter 之后最合适,相关源码在 : com.jfinal.template.expr.ast.FieldGetters.java 中,建议看一看

2019-06-19 17:27

@124653847atqq.com 下一版本我打算添加一个配置,让你可以配置这个 server name,想取什么名都可以