2017-08-31 23:48
sitemesh 是否需要与 servlet 绑定,例如,是不是要在 web.xml 中添加一个 Filter,而 enjoy 是不与任何其它 api 绑定的,这样就可以用于非 web 开发环境
而且利用过滤的方式还得去区分哪些该应用 head 与 body 部分,性能肯定好不到哪里去,而 enjoy 则使用的是任何语言中都有的 function 概念来实现这个功能的,学习成本会更低
sitemesh 想必会有一些约定需要去学习,而 enjoy 中模板函数是现成已有的功能,不需要学习就能用上她来实现 layout 的功能
当然, sitemesh 或许有它的优点,做框架性的东西最终还是一个利弊的权衡结果,希望你能先尝试一下 enjoy 的用法,感受一下再回头来对比一下
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 处理好就可以了