2020-07-27 14:25

@錢勢惘導 jfinal 几乎所有地方都留有扩展方式,当需求得不到满足时,优先扩展例如 Db 中的所有方法也是可以扩展的,能过继承 DbPro 然后配置 me.setDbProFactory(...);

2020-07-27 11:14

注意看控制台输出的 urlPara

不想支持这个参数加行代码
checkUrlRara(0);

或者加个拦截器也可以 @Befor( NoUrlPara.class)

如果希望所有请求都不支持 urlPara 配置为全局拦截器
me.add(new NoUrlPara());

2020-07-26 22:52

@过河 @杜福忠

今天看到俱乐部有位同学是通过在 package.xml 中加下面这几行代码解决的,十分简洁:
<!-- 项目 lib 目录下的第三方 jar 包全部 copy 到 lib 目录下 -->
<fileSet>
<directory>${basedir}/lib</directory>
<outputDirectory>lib</outputDirectory>
</fileSet>

建议这么来使用,如果你的 jar 包不在项目下面,可以将 {basedir}/lib 改成确切的路径

先收藏一波

2020-07-26 15:53

@拉不了屎了 你用的 jfinal 版本是好几年前的了,现在的新版本比老版本好用得多,升级也很方便,这里有专门的升级文档:
https://jfinal.com/doc/14-1

2020-07-26 15:52

@拉不了屎了 移除 fileUrl 是个好办法,赞

2020-07-26 15:11

ueditor 在初始化的时候会向后台发送请求来获取参数,你需要根据 ueditor 的官方文档来适当返回参数才可以,以下是 jfinal club 项目的处理方式:

/**
* UploadController 上传控制器,接管 ueditor 上传功能
*/
public class UploadController extends BaseController {

@Inject
UploadService srv;

/**
* 接管 ueditor 上传图片服务端
*
* 1:该 action 与 ueditor.config.js 中的 serverUrl: "/upload/ueditor" 对应
*
* 2:ueditor 页面加载时会向后端发送 "/xxx?action=config 请求用来获取服务端
*/
public void ueditor() {
/**
* ueditor 在页面加载时会向后端请求获取 config.json 内容
*/
if ("config".equals(getPara("action"))) {
render("/assets/ueditor/jsp/config.json");
return;
}

// 处理上传文件的代码省略 ...

}
}

注意以上代码中的 render("/assets/ueditor/jsp/config.json") 就是向浏览器返回的配置

2020-07-26 15:05

这个是因为 jfinal 的 devMode = true 时,会向控制台输出请求参数,而你的 base64 这个参数很长,System.out.print(...) 输出很耗时,所以才出现你碰到的情况

解决办法:
1:关闭 devMode, 配置一下 me.setDevMode(false); 即可

2:高版本的 jfinal 限定了参数打印的长度,可以升级到高版本,在这里可以看到参数限定输出长度:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/core/ActionReporter.java

2020-07-26 15:04

这个是因为 jfinal 的 devMode = true 时,会向控制台输出请求参数,而你的 base64 这个参数很长,System.out.print(...) 输出很耗时,所以才出现你碰到的情况

解决办法:
1:关闭 devMode, 配置一下 me.setDevMode(false); 即可

2:高版本的 jfinal 限定了参数打印的长度,可以升级到高版本,在这里可以看到参数限定输出长度:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/core/ActionReporter.java

2020-07-25 17:54

@錢勢惘導 我看了一下,改成 byte[] 模式以后没有满足你的需求,由于你的回复太晚了,为了保险起见改回原来的老版本了,因为昨天要发布新版本 4.9.01

其实 jfinal 的 redis plugin 是可以通过继承扩展的,大致如下:
public class MyCache extends Cache {
public Long hgetCounter(Object key, Object field) {
// 在此覆盖掉父类中的 hgetCounter 方法,实现自己想要的功能
}

然后配置一下:
Redis.addCache(new MyCache());

在使用的时候就能用上自己的实现类了,建议你通过这种方式来扩展使用

2020-07-25 17:08

后续补充, 新版本 jfinal 4.9.01 已经将上述方案添加进来,可以升级到该版本解决问题,注意仍然需要在 nignx 中添加配置才能支持,配置方法如下:
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

具体原因见本贴前面详细的回复

2020-07-25 17:08

后续补充, 新版本 jfinal 4.9.01 已经将上述方案添加进来,可以升级到该版本解决问题,注意仍然需要在 nignx 中添加配置才能支持,配置方法如下:
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

具体原因见本贴前面详细的回复

2020-07-25 14:37

@ivanant jfinal 4.9.01 新增了这个配置,可以直接升级到这个版本使用,超爽的

2020-07-25 14:36

@spKevin jfinal 4.9.01 这个版本已经改进了算法,对于 sql 压缩支持更好,配置方法:
activeRecordPlugin.getEngine().setCompressorOn(' ');

2020-07-25 13:18

@大大咧咧 jfinal 4.9.01 已发布到 maven 中心库, renderQrCode 没法改了

不过我在本地跟踪过 renderQrCode,内部已经有 flush() , 所以应该是没问题的

你那里出问题我感觉很奇怪,所以,还请验证一下你扩展一下 QrCodeRender,然后添加一个 flush() ,核心代码如下:

OutputStream os = response.getOutputStream();
// 经测试 200 X 200 大小的二维码使用 "png" 格式只有 412B,而 "jpg" 却达到 15KB
MatrixToImageWriter.writeToStream(bitMatrix, "png", os); // format: "jpg"、"png"
os.flush();

也即原有的 MatrixToImageWriter.writeToStream(...) 使用 os 参数,前后各添加一行代码

2020-07-24 21:44

renderQrCode(...) 的这么来测试:
public void index() {
renderQrCode("test");
}

然后启动项目,在浏览器里面直接访问上面的 action 即可测试