2019-12-20 12:59

这里只需要注意优先调用一次 getFile(),然后额外参数的获取方式与原来的完全一样了

要注意一个问题,如果有拦截器的话,拦截器也有获取参数的话,也需要注意先调用:
inv.getController().getFile();

建议改成下面的方式,更好解决:
public void upload(File file, Striing paraentId) {
...
}

注意这里用到了 action 参数注入,需要开启 JDK 的 parameter 参数,见文档:
https://jfinal.com/doc/3-3

用起来挺方便的

2019-12-20 12:11

目前内部有两个处理机制:
1:通过 addMapping(...) 预先映射,对接口、抽象类进行代理时会去找这个映射
2:通过在 @Inject 注解中给定类型,例如:@Inject(Banan.class)

再加其它方式的干预,或许并不适合,建议你自己尝试改一下这里的设计,希望有更好的方案

谢谢反馈

2019-12-18 19:51

刚刚在本地测试了一下,如果使用变量的话不会出现你碰到的情况,例如:
Db.find("SELECT * FROM `test` where id=? ", id);

当参数直接使用 null 值常量的时候才会出现异常:
Db.find("SELECT * FROM `test` where id=? ", null);

而这种使用 null 常量作为 Object... paras 参数的情况是极少的,当然,添加一个 if 判断会更好

希望你在本地再测试一下,看你那里的情况是不是与我说的完全一致,或许你那里的情况更加特别

2019-12-18 19:37

@无翼 这里改进一下可能会更好,谢谢你的建议

你暂时通过继承 MysqlDialect 来解决,也相当方便

2019-12-18 19:34

@小飞象 这个仅仅是序列化算法不同,可以通过指定序列化算法解决

jfinal RedisPlugin 默认使用 fst 做的序列化,可以通过下面方法配置:
RedisPlugin.setSerializer(...);

2019-12-16 21:12

@Dull 你改变的是 scope 作用域中的 user , 验证主法是你在另一个页面再次使用 #(user) 时仍然是 shared object 过来的 user

2019-12-16 17:13

你在正文中的例子是改变不了 user 变量本身的,因为 set 指令操作的对象与 shared object 处在不同的 Scope 空间

如下代码可以改变 user 内部的值
#(user.setName(...))

注意区分 shared object 变量与其他变量的不同用法

2019-12-16 14:11

@天晴 一般使用 pajx 的项目是后台管理之类的,并发访问并不大,这样处理一般没问题

要注意 js 的引入放在 html 的最后一部分,不要放在 html 的 header 部分中,这样也能加快页面展现

再一个,你可以用一用 js 的按需加载机制,用到的时候再加载,也就不会有这个顾虑了

2019-12-16 13:41

将 a.js 只在 layout 中引入,不要在 pjax 加载的 html 片段中引入,参考一下 jfinal club 中的用法,重点看 js 的引入部分

2019-12-16 13:38

继承一下 ProxyFactory,然后在对象被创建以后读取需要被处理用于配置的注解,通过 PropKit 来获取配置并注入即可

配合 @Inject 来用

2019-12-14 18:13

建议直接看 nginx 官方文档有关 SSL 配置的部分,主要配置就那几项

2019-12-14 18:12

SSL 建议配置在 nginx 上, 一来是配置方便,二来是性能最好,下面给出 jfinal.com 的 ssl 配置:
server {
listen 80;
listen 443 ssl http2;
keepalive_timeout 70;

server_name jfinal.com www.jfinal.com;
root /app/jfinal-com/webapp;

ssl_certificate cert/20200618_www.jfinal.com.pem;
ssl_certificate_key cert/20200618_www.jfinal.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location 配置省略
}

简单来说就是添加一个 server 配置,其中放上监听的端口号,已经对应的域名
有关 ssl 的配置,开启就是一个 listen 443 ssl http2; 搞定,后面的 ssl_ 打头的是一些证书、算法、cache 等等配置,这些在 nginx 官网都有详细的文档

如果你要配置多个 SSL 对应多个网站的话,继承添加 server ,改改 server_name、root、location 配置即可

2019-12-13 15:14

@zylucky 你在 configEngine 中配置了:
me.setToClassPathSourceFactory();

那么 engine 会对 class path 以及 jar 包中寻找模板,文档中有详细的说明

2019-12-13 15:13

@fmpoffice SSL 建议配置在 nginx 上, 一来是配置方便,二来是性能最好,下面给出 jfinal.com 的 ssl 配置:
server {
listen 80;
listen 443 ssl http2;
keepalive_timeout 70;

server_name jfinal.com www.jfinal.com;
root /app/jfinal-com/webapp;

ssl_certificate cert/20200618_www.jfinal.com.pem;
ssl_certificate_key cert/20200618_www.jfinal.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location 配置省略
}

简单来说就是添加一个 server 配置,其中放上监听的端口号,已经对应的域名
有关 ssl 的配置,开启就是一个 listen 443 ssl http2; 搞定,后面的 ssl_ 打头的是一些证书、算法、cache 等等配置,这些在 nginx 官网都有详细的文档

如果你要配置多个 SSL 对应多个网站的话,继承添加 server ,改改 server_name、root、location 配置即可

2019-12-13 14:21

下载首页右侧的 jfinal_demo_for_maven-4.8.zip , 将里头的 log4j.properties 文件加到项目中,然后添加 log4j 的 pom.xml 依赖

让异常输出看异常是什么