怎么在JFinal中设置模板路径?

发布于 2021-11-23 16:06:38 字数 156 浏览 395 评论 10

@JFinal 你好,想跟你请教个问题:

JFinal怎么设置模板路径呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

野心澎湃 2021-11-28 03:42:39

建议jfinal支持slf4j,我比较喜欢用这个。。。哈哈。
@jfinal

策马西风 2021-11-28 03:27:25

回复
下一版将开放 ILoggerFactory接口,则能扩展新的Logger支持,如 slf4j也可以。即便是JFinal 1.1.4版本,你也可以在项目中用slf4j,只不进JFinal 自身没用这个 : )

吃颗糖壮壮胆 2021-11-28 02:56:06

回复
不过我觉得现有的logger的接口需要修改(String message,Exception e) 这种接口是不够用的。比如logback支持可变参数的占位符日志logger.debug("a is {},b is{}, c is {}",a,b,c)这样的接口。希望jfinal logger能考虑支持这样的日志方式:)

百思不得你姐 2021-11-28 02:55:13

回复
是啊。但是想看jfinal的log,就得两个都引入进来,呵呵。

水水月牙 2021-11-28 02:07:41

回复
未来会提供多个 ILoggerFactory实现,覆盖所有这些常见的日志系统,此问题将不复存在 :)

琴流音 2021-11-28 02:03:16

关于模板路径有如下几个相关的地方:

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 手册,欢迎常来提建议 :)

夜无邪 2021-11-28 01:19:59

引用来自“27号”的答案

可以配置全部模板的基础路径:

@Override
	public void configConstant(Constants me) {
		me.setBaseViewPath("/WEB-INF/path");
	}

墨洒年华 2021-11-27 19:52:59

考虑过实现这样的功能,但是这样就无法 render 到 WebRoot 根下面其它的非指定目录下的文件了,例如,我想 render到 WebRoot/xyz/abc.html 就不方便了

蓝颜夕 2021-11-27 12:53:23
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();
	}

勿忘初心 2021-11-27 07:59:11

可以配置全部模板的基础路径:

@Override
	public void configConstant(Constants me) {
		me.setBaseViewPath("/WEB-INF/path");
	}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文