2020-06-03 17:18

@Dull 用上 JFinalJson.addToJson 挺好的

2020-06-03 17:12

@Dull 使用 Timestamp 的情况,一般是需要 时、分、秒的, 所以 JFinalJson 的默认配置就挺好用的

你的需求是不需要 时、分、秒,所以,我建议你使用 mysql 的 date 类型,而不是 datetime 类型,因为有些浪费

2020-06-03 17:09

@cqztt 控制台下面执行 javac 命令,找不到命令证明是 JRE

2020-06-03 17:07

@Dull 那个配置仍然只是局部的, 用我介绍的配置方法才能成为全局的

2020-06-03 17:05

通过 JFinalJson.addToJson(Timestamp.class, (v, d, ret) -> {}); 这种扩展方式,你可以针对任意类型去定制转换规则

没有比这更彻底、简单、舒爽的扩展方式了

2020-06-03 17:04

jfinal 4.9 重新设计了 JFinalJson 模块,采用了全方位扩展结构,所以要实现你这个功能极度简单:
JFinalJson.addToJson(Timestamp.class, (v, d, ret) -> {
Timestamp t = (Timestamp)v;
String s = ret.getFormat("yyyy-MM-dd").format(t);
ret.addStrNoEscape(s);
});

由于 Json.java 中并不支持 timestampPattern 配置,所以该配置仅仅是 JFinalJson 内部使用的,所以你当前无法简单地通过配置解决问题

在你不扩展的情况下,只可以临时指令 timestampPattern,例如:
JFinalJson.getJson().setTimestampPattern(...).toJson(...);

上面的临时指定不是全局配置,需要每次都要调用一下那个 setTimestampPattern

2020-06-03 16:48

又是一个基础错误,注意看异常信息:
A full JDK (not just JRE) is required

也就是说你的运行环境是 JRE 而不是 JDK

JSP 是被 JDK 中的相关工具态编译的,而 JRE 为了节省体量去除了一些工具体的程序,而编译工具就是其中被去除的部分

解决办法:
1:卸载 JRE, 下载安装 JDK
2:注意要配置好环境变量

2020-06-03 15:49

@zhtian nginx 配置 root 也是可以的,可以指向多个资源目录


jetty-server 与 nginx 配置合使用的话,只能配置 nginx

jetty-server 独立使用,也有配置,网上找一下配置方法

2020-06-03 15:33

@cqztt jfinal 1.8 应该也有这两个配置,你检查一下

2020-06-03 15:26

@逍遥一生 除了加这个,最好还加上这个判断:
if (inv.getReturnValue() != null) {
...
}

当返回值为 null 的时候,证明 action 方法返回为 void,例如:
public void index() {
}

2020-06-03 15:25

配置一下 undertow.resourcePath 指向更多的资源路径就可以了,例如:
undertow.resourcePath = src/main/webapp, /var/www/upload

上面配置的 /var/www/upload 就是指向了另一处路径,并将其当成是资源根目录。我在本地开发就是这么用的,爽得不行

2020-06-03 15:23

@cqztt 方法在前面已经告诉你了,至于少了输出 sql 的事,你得确保 arp.setDevMOde(true),还得确保 arp.setShowSql(true) 这两个配置都是 true

2020-06-03 14:36

@cqztt 补充一下: setDenyAccessJsp(boolean) 只是限制了浏览器地址栏直接访问 .jsp 文件, 并没有限制 renderJsp(...) 访问 jsp 模板

2020-06-03 14:35

@cqztt 如果你使用的是 jfinal 较高的版本,想要支持在浏览器中直接访问 .jsp 文件,需要配置:
public void configConstant(Constants me) {
me.setDenyAccessJsp(false);
}

这是为了防止破坏者上传恶意 .jsp 文件,然后在浏览器直接: http://xxx.yyy.com/path/xxx.jsp

上传 jsp 文件是常用攻击 java web 项目的方式

当然, jfinal 的文件上传已经对上传 jsp 文件做了限制,使用最新版本的 cos:
cos-2020.4.jar

新版本 jfinal 引入 setDenyAccessJsp(boolean) 是为了加固安全性

2020-06-03 14:06

@逍遥一生 或许添加一个对于 render 的判断为好,因为在 action 中可能使用了 render 方法,加这个判断:

if (inv.getController().getRender() != null) {
return ;
}

getRender() 方法如果返回的不是 null,证明在 controller 中调用过 render 系列的方法,或者 redirect 方法