2017-08-31 17:36
@ttjs2013 在 spring 中获取 request 这个早就忘了,spring 是一定有一种回调方式,让你自己的代码做初始化的,建议找找相关资料
此外,你可以通过 JFinalViewResolver.engine.addSharedObject(....) 等方法来配置在 spring 用到的这个 engine 对象,只要找个合适的初始化回调的地方就可以了
你是怎么解决的在模板中得到 request 数据的,如何配置的?
2017-08-31 17:33
第一个问题, getSession() 默认是调用转调了 HttpServletRequest 的 getSession(),而这个方法在 session 没有被创建时,会默认给你创建一个,所以永远不可能为 null 值,这个行为是 java web 规范,所以与 jfinal 毫无关系
你可以通过 getSession(false) 让 HttpServletRequest 在 session 不存在时不去创建 session,但是这也不太保险,因为你要确保所有地方是 getSession(false) ,否则不管登录没登录,只要 getSession() 都不可能是 null 值
第二个问题是个纯前端的事, jfinal 是后端框架,是没法干预到前端的事的,只要你将 html、js、css 处理好就可以了
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 毫无关系的,尤其是前端的问题