2019-10-14 17:18

@小徐同学 undertow 应该也能挂 http 路径,看看他的文档

2019-10-14 17:17

先用生成器生成getter setter 方法,然后 getModel 改用 getBean 看看结果,生成器可以在首页下载 jfinal_demo_for_maven.zip,里头有使用示例

其实 getModel 也是可以的,单步调试找找原因

2019-10-14 17:16

@zhangtianxiao renderNull() 不会向客户端输出任何东西,可能造成客户端的等待,起码会等待服务端关闭连接之类的动作

客户端如果发生等待,可能就不会发起新的请求,从而造成性能测试结果很低

任何待等都可能拉低性能

2019-10-14 17:13

一定要注意区分模板函数与指令,这是两个完全不同的概念,定义与使用都不同

2019-10-14 17:13

#define 定义出来的并不叫指令,而是叫模板函数,调用方法要添加一个字符 '@',得这样:
#@now()

#define 定义的函数与指令可以重名,不会影响

2019-10-14 17:11

继承了 baseModel , 使用 FastJson.getJson().toJson(data) 不会有问题

如果有问题,你要先说明是什么问题

有关 json 的互相转换,一定要先了解其底层的机制:
https://www.jfinal.com/doc/12-1

文档中并不涉及具体的转换算法与逻辑,只涉及 jfinal 之下不同的转换实现类是什么

2019-10-14 15:15

@cs3230524 jfinal 给定的 JFinalJson 实现是直接对 Model 的 Map attrs 进行 json 转换,所以没有走 getter 方法

这种情况下可以使用 fastjson:
renderJson(FastJson.getJson().toJson(data));

2019-10-14 14:34

@小徐同学 正如我上面的回复, 如果社区的 jfinal-com 项目的 undertow.resourcePath 配置不使用 /Users/james/jfinal-com/_res ,那么我在开发的时候,用户头像、贴子上传的图片都是缺失的,界面非常不美观

如果我将部署环境下新产生的用户头像、贴子图片下载到本地用于正开发的项目的话,项目目录下面就会有大量的这些资源文件,很不方便,尤其是对于 git / svn 版本管理

2019-10-14 14:30

@小徐同学 这个功能早就有了,用着极度方便,开发与部署的环境可以尽可能的统一,部署环境下产生的新数据、新图片可以与项目资源分开存放,对于 git/svn 十分友好

2019-10-14 14:29

怎么方便怎么使用

你代码中的第二种方法,可以定制生成器,自动生成方法内部的东东:
http://www.jfinal.com/share/1021

此外, 生成的 getter 方法应该是处在 base model 中, 而你的代码给出来是在最终的 Model 中,显然是不对的

生成器生成的 base model 中的 getter 、setter 方法不要手动去改,这个在文件头部已经有过如下说明:
/**
* Generated by JFinal, do not modify this file.
*/

也就是强调过这个文件不要修改它,让生成器自动维护它

你可以在最终的 model 中手动创建新的 getter 方法,覆盖掉父类中的 getter 方法

2019-10-14 14:25

补充,如果你自己的 model 没有生成 base model , 也可以将原先的继承 Model 的类,手动改一下继承MyModel , 例如:
原先的 Model 为:
public class User extends Model {....}
改成:
public class User extends MyModel {....}

原理与生成器的办法是一样的都是引入一个中间 MyModel 代替原先的 Model

2019-10-14 14:24

如果你用生成器生成过 model、base model , 可以将生成的 base model 由继承 Model 改为继承 MyModel, 而这个 MyModel 就是你用来实现这个功能的工具,MyModel 大致代码如下:
public class MyModel extends Model {
public boolean save() {
// 这里加入你需要的日志代码
return super.save(); // 这里调用父类的实际保存
}
}

最后通过参考这篇文章,定制一下生成器的模板:
http://www.jfinal.com/share/1021
简单说就是改一下模板中的 extends Model 为 extends MyModel

2019-10-14 12:18

最后补充一个知识点,undertow.resourcePath 配置,如果是逗号分隔的多个目录,那么第一个目录会成为项目的 webroot 目录,也就是说 jfinal 的 PathKit 工具类的 PathKit.getWebRootPath() 返回值将指向它

2019-10-14 12:16

我自己在开发 jfinal.com 的时候,配置如下:
undertow.resourcePath=src/main/webapp, /Users/james/jfinal-com/_res

其中 src/main/webapp 指向我正开发项目下的 webapp 目录
其中 /Users/james/jfinal-com/_res 目录下的资源是从部署环境的用户上传的各种资源文件,例如用户头像文件

这样做的好处是可以让开发环境的基本资源与部署环境动态不断产生的新资源隔离开来,从而 git 或 svn 版本控下面的资源文件可以最少化

2019-10-14 12:13

通过配置 undertow.resourcePath 可以将任何多个目录或者 classpath 内的资源映射进来,例如:
undertow.resourcePath = src/main/webapp, /var/www, classpath:static

以上第一个配置 src/main/webapp 用于映射到开发时项目中的 webapp 目录
第二个配置 /var/www 是操作系统内的一个目录
第三个配置 classpath: static 指向 CLASSPATH 下的 static 子目录,该目录可以是在 jar 包内存在的

多个配置可以用逗号分离,这些在文档中都有过说明:
https://www.jfinal.com/doc/1-4