2018-12-27 16:31

@futurezwl jfinal undertow 暂不支持 JSP,建议用着 jetty-server

2018-12-26 21:39

settlementAmount 生成的问题,有两个同学碰到过, 原因是数据库字段名前面有不可见字符:换行符,在数据库中将这个字段删掉,重新创建,不要 copy ,因为 copy 可以将换字字符 copy 过来

第二个问题,某些 para 没有添加,应该是你的 select 子句中包含了 #para 这样的指令

select 子句用于分页时,是要被正则表达式去除掉的,看一下 paginate 原理就知道了。

解决办法是,外层再套一个 select * from ( 原 sql ) as temp

具体原因与解决办法文档中有:
https://www.jfinal.com/doc/5-6

2018-12-26 21:35

setCookie(String name, String value, int maxAgeInSeconds)

maxAgeInSeconds 的含义为:
-1: clear cookie when close browser. 0: clear cookie immediately. n>0 : max age in n seconds.

你的需求是关闭浏览器就删除,配置成 -1 即可

2018-12-26 21:33

me.setBaseUploadPath(...) 与 me.setBaseDownloadPath(...) 这两个方法的参数如果使用了绝对路径,就会去指向项目之外的一个绝对路径

如果你的这些路径不是绝对路径,不要以 "/" 打头, 也不要以 "D:/" 这种盘符打头,会被认为是绝对路径

如果不是绝对路径,正确的配置方式为:
me.setBaseUploadPath("upload")
me.setBaseDownloadPath("download")

当然,上述两个配置是 jfinal 配置的默认值,可以删掉配置一样是这个值

知道了前面的 basePath,再回到问题本身就容易解决了,renderFile(file) 的规则是:
String finalFile = baseDownloadPath + file;

具体为啥出错,单步调试一下 FileRender 中的 render 方法一分钟内解决

2018-12-26 21:26

http://www.jfinal.com/share/281

2018-12-26 21:17

controller 中提供了丰富的 setCookie(...) 一系列的方法, 方法上有说明文档,控制一下 maxAge 参数即可

2018-12-26 19:25

通过 getPara() 取数据

通过什么方式取数据,完全取决于客户端发送方式,例如,你用 curl 发送的方式可能是问号挂参或者是 form 表单模拟,这种全是用 getPara()

2018-12-26 19:23

@zhangshiqiang 那个是很老的版本了,新版本中的 HttpKit.readDate 会保留 \n, 但是 \r 是会扔掉的,对于 json 来说有 \n 就够了,linux、windows 下通用

2018-12-26 17:55

@zhangshiqiang CPI 这个改进证明分享的同时自己也能受益

2018-12-26 17:54

getRawData() 这个方法可以反复调用,所以 if (request.getAttribute("_obj") != null) 这个判断可以省去了

2018-12-26 17:53

ServletInputStream 读数据这一段,建议一个小改进:
String str = inv.getController().getRawData();

感谢分享

2018-12-26 17:51

例如你说的,没到 10 分钟提示就变成了 “用户名或密码错误”,这个一调试就出来了, 看程序走了哪个分支,但是你去猜原因的话是很难的

2018-12-26 17:50

这个只能单步调试定位原因

由于你这个问题十分明显,所以一次调试就可以知道原因了

2018-12-26 17:44

@zhangshiqiang @q76267454 这类隐藏功能,在 jfinal 中到处都是。 多看看源码,能玩出很多创新来

2018-12-26 17:32

ClassNotFound , 缺少依赖而已,java 基础