2017-08-31 17:21

超级好使,感谢分享 ^_^

2017-08-31 17:08

spring 的 view 扩展应该是默认就可以读取 requset.setAttribute(...) 属性的,如果确实不可以读取,添加一下如下的配置:
exposeRequestAttributes = true

由于回复不支持 xml 标记,上面的配置改成 propertye name="setExposeRequestAttributes" value="true" 即可,记得搞定后回来再反馈一下

contextPath 可以设置为 sharedObject,这样就不会污染 request 中的 attribute 了,拿到 JFinalViewResolver 对象,然后调用一下 addSharedObject(...) 将 contexPath 添加进来就可以了

contextPath 对于一个启动后的项目来说一直是不变的一个常量,所以在 request 里面是线程安全的

2017-08-31 09:57

@2B的It青年 table name 还可以为 null 和 empty? 从来没碰到过这种 table

2017-08-30 18:36

@吃桃子的松鼠 就是说 queryInt、queryColumn、queryLong 这类返回 int 、long 返回值的 sql 中的 select 只能是一个字段例如:
Db.queryInt("select count(*) from xxx"),而不能是
Db.queryInt("select count(id), title from xxx")
这种返回多个字段的 sql 显然无法使用 int、long 去接收值

2017-08-30 17:50

@麻言 所以,有几乎超过 50% 的问题是与 jfinal 毫无关系的,尤其是前端的问题

2017-08-30 17:50

这个细心点,单步调试一下即可解决,现有信息量完全看不同有啥问题

2017-08-30 17:49

把这个拦截器搞成全局拦截器,然后里面添加这样一个逻辑:
if (isLogin()) {
inv.invoke(); // 放行
} else {
inv.getControler().redirect("/login"); 重定向到登录页面
}

最后,在跳去登录页面那个 action 的方法上清除一下这个拦截器:
@Clear(LoginInterceptor.class)
因为登录 action 不能被拦截器,否则连登录页面都进不去了

jfinal.com 全套代码在加入俱乐部以后可立即下载,节省很多时间: jfinal.com/club

2017-08-30 17:31

enjoy 渲染出来的值可以让 js 去用,反之则不行,例如:
alert('#(message('+v+'))');
上面代码中的 v, 仅仅会被 enjoy 看成是一个表达式的标识符而已,前方的 var v ="123" 是否存在完全感知不到,因为模板引擎的工作模式只能顾指令和表达式,此外的一切都只当成是纯文本

简单说,在模板引擎看来,一切 js 代码内容全是纯文本。 知道了上述原理,就知道了 js 中的所有东东是不可能让 enjoy 感知到的

2017-08-30 11:43

貌似只有 jetty 高版本才支持,所以建议升级一下高版本的,只需要模仿 jfinal 内置的 jetty 代码就可以了,具体办法有很好的参考示例:
https://my.oschina.net/myaniu/blog/470050

2017-08-30 11:41

如果你用的是 jfinal 的 model就好办了,用一下这两个便捷方法:
1:model.keep(x, y, ...) 只保留指定的属性
2:model.remove(x, y, ...) 只去除指定的属性

2017-08-30 11:38

@小风 重定向的问题只有 tomcat 会有,jetty 不可能有,看这篇问答:
http://www.oschina.net/question/941098_93842

2017-08-29 21:50

特别提醒一下,浏览器自身渲染一个没有打开任何 url 的空白标签窗口时,仍然会加载 js 文件,例如 chrome 浏览器会默认加载以下三个 js:
config.js
local-ntp.js
single.js

这三个 js 由两个 html 加载,而这两个 html 并不需要打开任何 url

2017-08-29 21:47

@麻言 按一下 F5,重新发起次请求,看这个 content.js 是哪个请求获取的,注意是不是从别一个 js 里面发起的,把这个 content.js 干掉,整个世界就清静了

2017-08-29 21:41

@麻言 jfinal 在后端,只是向浏览器发送渲染完成的 html 或者 json 数据,而 js 文件的内容是由 tomcat / jetty 这类容器发送给浏览器的,jfinal 并没有参与 js 文件的发送

2017-08-29 21:39

这个是纯 javascript 的问题,与 jfinal 毫无关系了

异常提示 content.js 第 5 行代码写错了