2017-07-07 11:25

这个是 java 基础,建议多回顾一下上学时候的基础

2017-07-07 11:25

@cccc123 两个办法,选其一
1:消除递归
2:如果递归是正常的流程,让递归有退出条件

2017-07-07 11:23

@1初学者 先用 generate.addExcludedTalbe(...) 将视图过滤掉,jfinal 3.2 已经去掉了对 view 的生成代码

2017-07-07 11:21

zxing 是支持条型码生成的,建议看一下 zxing 的文件,然后做一个 BarcodeRender 就可以了

2017-07-07 11:20

看一下 jfinal 手册里有关 Clear 的用法,有实际的例子

2017-07-07 11:19

最后再补充一点, jfinal 3.2 已经对 string template 默认进行缓存了,如果要缓存需要这么调用:
engine.getTemplateByString(content, true);

而 engine.getTemplateByString(content) 相当于第二个参数为 false,这个在升级到 3.2 版本的时候很轻松,先知道这件事就好

2017-07-07 11:18

@i++ 我倒是建议你不扩展 Engine,用一个独立的定时器线程每隔一段时间去看看 templateCacheSize(),如果超出一定的范围就清一下缓存,当然这样也会清掉模板文件的缓存

要做得更加完善,通过继承 engine 也是可以的,但不需要那么麻烦,只需要在继承类中覆盖掉 getTemplateByString 方法,然后将 key 存起来,并调用父类就可以了,大致如下:
public class MyEngine extends Engine {
Map stringTemplate = new HashMap();

public Template getTemplateByString(String content) {
String key = HashKit.md5(content);
Template ret = stringTemplate.get(key);
if (ret != null) {
return ret;
}
return super.getTemplateByString(content);
}

public void clearStringCache() {
// 这里对 Map stringTemplate 进行迭代
// 利用其 key 调用父类的 removeCache 方法
super.removeTempateCache(key);
stringTemplate.remove(key);
}
}

2017-07-07 11:09

直接获取页面内容直接给浏览器的用法,建议自己创建一个 MyRender,里面就是从文件系统加载内容,然后写到 response.getWriter() 中去就好,用的时候这样:
render(new MyRender(fileName));

2017-07-07 11:07

@朱 回复中的代码十分简洁,而且 key 值用到了比较操作符,超赞

2017-07-07 11:05

这个分享很有价值,已收藏并点赞

再建议用一下 jfinal-java8 版本来整合做一下,jfinal-java8 这个版本直接支持 action 参数注入:https://git.oschina.net/jfinal/jfinal/tree/jfinal-java8/

2017-07-07 11:03

@hzw 仔细看一下 jfinal 手册有关 sql 管理这一章,里面有很多例子

2017-07-07 11:01

你可以在 action 中判断一下是否为 https 请求,如果是的话,手动添加上这个 https 前缀,如果不是则直接: redirect("/agent/captcha");

2017-07-07 10:58

redirect 的时候,带上 htts 前缀: redirect("https:/agent/captcha");

这个地方确实可以考虑改进一下

2017-07-07 10:57

LenderController 的第 55 行与 BorrowerController 第 37 行,这两行代码所在的方法,互相之间在调用,形成了一个间接递归的关系

但这个递归调用没有结束控制,所以就会永远不停地调用下去,直到触发 JVM 的保护机制抛出异常