2019-02-18 17:11

严格按文档来配置 eclipse 中的 maven ,否则会出各种奇怪问题:
https://www.jfinal.com/doc/1-1

已经有多人是因为 maven ===> User Settings 没配置好出了各种奇葩问题

2019-02-18 16:55

细心去写 javascript 代码,ajax 是基础

2019-02-18 16:21

jfinal undertow 是专门支持 jfinal 项目开发的,不支持 spring

2019-02-18 15:57

@王子鹏 跳转在本质上与后端的 render 无关,既然你是 ajax 请求,在得到后端的数据以后,只能用 javascript 代码实现跳转

跳转的目标 url,可以是后端传过来的,例如:
Ret ret = Ret.ok("url", "/users");
renderJson(ret);

success : function(ret) {
if (ret.state == "ok") {
window.loacation.href = ret.url;
}
}

2019-02-18 13:19

@yunmuzhou 用 getPara 或者 getRawData() 试试

2019-02-18 11:44

getFile 获取到 null 值这个很奇怪,升级 cos 到 2017.5 这个版本试试

2019-02-18 11:26

后端使用 renderToString 配合 renderJson 来使用, 而不是直接使用 render,大致如下:
String html = renderToString("xxx.html");
Ret ret = Ret.ok("html", html);
renderJson(ret);

前端 ajax 大至如下:
success : function(ret) {
alert(ret.state);
alert(ret.html);
}

其中 ret.state 是 Ret.ok 设置的一个状态,有两种状态:"ok" 与 "fail"
这两个状态可以这么来判断:
if (ret.state == "ok")
if (ret.state == "fail")

还可以在后台传入更多数据,例如:
Ret ret = Ret.ok("html", html);
ret.set("key1", 123).set("key2", 456);
renderJson(ret);

在前台通过 ret.key1、ret.key2 获取

2019-02-18 11:19

还有一个更方便的办法是使用与源码绑定的 jar 包,名字可能叫:
jfinal-3.6-bin-with-src.jar

同样也是在 首页右侧下载 jfinal-3.6-all.zip 的 zip 包里面提供了

2019-02-18 11:18

在首页右侧下载 jfinal-3.6-all.zip,里面有一个源码的 zip 包,在开发的时候绑定过去就可以了

2019-02-18 11:17

@tianya 这个就奇怪了。 不过就算是 sessionId 变化了,但你通过 getSessionAttr(key) 仍然是可以获取到数据的

对于 session 的操作,不要直接使用 sessionId,而是直接使用 session 操作的 API,例如:
setSessionAttr(...)
getSessionAttr(...)
getSession(true).setAttribute(...)
getSession(true).getAttribute(...)

这样就绕开了 session id

2019-02-18 11:14

从 response.getWriter() 得到的 Writer 无需自己关闭,web 容器负责关闭它,看一下 java web 相关类中的文档可知

如果你主动关闭,会出下面的问题:
1:在某些 web 容器下,如果在你正发送数据时客户端主动断开连接会报异常,如 undertow 之下

2:拉低性能

早期的 jfinal 版本是主动关闭 Writer 与 OutputStream 的,是多年的打磨改进成现在的样子的

注意,上面所指仅限于 java web 规范中从 HttpServerletResponse response 对象中获取的 Writer 与 OutputStream,不能自行 close(), 其它情况多数需要自己 close(),如 FileOutputStream

2019-02-17 19:29

@tianya 那应该是老版本 jfinal undertow 的依赖没有消除,jfinal undertow 1.5 修复过这个问题,你再试试

2019-02-17 16:04

@yangzhiwen 用于 sql 管理的 Engine 可独立配置 devMode ,配置方法如下:
activeRecordPlugin.getEngine().setDevMode(true)

也可以这样:
activeRecordPlugin.setDevMode(true)
上面这个与前面那个是打通的,两种配置完全等价

重点:由于同一个项目中通常使用了多个 Engine 对象,用于不同的用途,所以这些 Engine 对象需要被单独配置,保障互不干扰

关于独立配置特意补充了相关文档:
http://www.jfinal.com/doc/6-2

2019-02-17 15:56

大概率是 login 上的拦截器发现没登录,给重定向到 index

使用 @Clear 清掉 login 上的拦截器

2019-02-17 14:42

@moyush 将资源放在 E:/xxx/xxx/XXX 之下,然后配置:
undertow.resourcePath=src/main/webapp, E:/xxx/xxx
这样实际目录就多出来一层 "XXX",正好是要访问的路径