@JFinal 你好,想跟你请教个问题:
JFinal怎么设置模板路径呢?
建议jfinal支持slf4j,我比较喜欢用这个。。。哈哈。@jfinal
回复下一版将开放 ILoggerFactory接口,则能扩展新的Logger支持,如 slf4j也可以。即便是JFinal 1.1.4版本,你也可以在项目中用slf4j,只不进JFinal 自身没用这个 : )
回复不过我觉得现有的logger的接口需要修改(String message,Exception e) 这种接口是不够用的。比如logback支持可变参数的占位符日志logger.debug("a is {},b is{}, c is {}",a,b,c)这样的接口。希望jfinal logger能考虑支持这样的日志方式:)
回复是啊。但是想看jfinal的log,就得两个都引入进来,呵呵。
回复未来会提供多个 ILoggerFactory实现,覆盖所有这些常见的日志系统,此问题将不复存在 :)
关于模板路径有如下几个相关的地方:
1:在YourJFinalConfig.configRoute(Routes me)中配置路由时指定模板路径
public void configRoute(Routes me) { me.add("/user", UserController.class); me.add("/blog", BlogController.class, "/otherPath"); }
以上代码,第一个配置中只有两个参数,那么模板路径就是: WebRoot/user,而第二个配置有三个参数,那么模板路径就是: WebRoot/otherPath。在Controller之中通过 render("demo.html")来取模板 demo.html的时候会自动去上面配置的模板路径去找
2:在Controller中通过输入绝对路径直接指定模板路径
public class UserController { public void index() { render("/absPath/user.html"); } }
以上代码中的 render("/absPath/user.html"),将去 WebRoot/absPath路径下去找 user.html。凡是以 "/" 打头是指绝对路径。
建议仔细看一下 JFinal 手册,欢迎常来提建议 :)
可以配置全部模板的基础路径:
@Override public void configConstant(Constants me) { me.setBaseViewPath("/WEB-INF/path"); }
考虑过实现这样的功能,但是这样就无法 render 到 WebRoot 根下面其它的非指定目录下的文件了,例如,我想 render到 WebRoot/xyz/abc.html 就不方便了
me.setBaseViewPath("/WEB-INF/path");
这种方法不太好,render的时候都得改成,太多地方需要修改
render("blog/index.html");
最后想了一个办法
@Override public void afterJFinalStart() { try { FreeMarkerRender.getConfiguration().setSharedVariable("base", JFinal.me().getContextPath()); FreeMarkerRender.getConfiguration().setServletContextForTemplateLoading(JFinal.me().getServletContext(), "/WEB-INF/templates"); } catch (TemplateModelException e) { e.printStackTrace(); } FreeMarkerModelUtils.creatModel(); super.afterJFinalStart(); }
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(10)
建议jfinal支持slf4j,我比较喜欢用这个。。。哈哈。
@jfinal
回复
下一版将开放 ILoggerFactory接口,则能扩展新的Logger支持,如 slf4j也可以。即便是JFinal 1.1.4版本,你也可以在项目中用slf4j,只不进JFinal 自身没用这个 : )
回复
不过我觉得现有的logger的接口需要修改(String message,Exception e) 这种接口是不够用的。比如logback支持可变参数的占位符日志logger.debug("a is {},b is{}, c is {}",a,b,c)这样的接口。希望jfinal logger能考虑支持这样的日志方式:)
回复
是啊。但是想看jfinal的log,就得两个都引入进来,呵呵。
回复
未来会提供多个 ILoggerFactory实现,覆盖所有这些常见的日志系统,此问题将不复存在 :)
关于模板路径有如下几个相关的地方:
1:在YourJFinalConfig.configRoute(Routes me)中配置路由时指定模板路径
以上代码,第一个配置中只有两个参数,那么模板路径就是: WebRoot/user,而第二个配置有三个参数,那么模板路径就是: WebRoot/otherPath。在Controller之中通过 render("demo.html")来取模板 demo.html的时候会自动去上面配置的模板路径去找
2:在Controller中通过输入绝对路径直接指定模板路径
以上代码中的 render("/absPath/user.html"),将去 WebRoot/absPath路径下去找 user.html。凡是以 "/" 打头是指绝对路径。
建议仔细看一下 JFinal 手册,欢迎常来提建议 :)
引用来自“27号”的答案
可以配置全部模板的基础路径:
考虑过实现这样的功能,但是这样就无法 render 到 WebRoot 根下面其它的非指定目录下的文件了,例如,我想 render到 WebRoot/xyz/abc.html 就不方便了
这种方法不太好,render的时候都得改成,太多地方需要修改
最后想了一个办法
可以配置全部模板的基础路径: