按照一些文章的代码设置如下:
@Bean(name = "enjoyViewResolver") public EnjoyViewResolver getJFinalViewResolver(){ EnjoyViewResolver jf = new EnjoyViewResolver(); jf.setSessionInView(true); //设置页面获取session jf.setDevMode(true); jf.setSourceFactory(new ClassPathSourceFactory()); //这里根据自己的目录修改,一般页面放到/templates下面 jf.setPrefix("/templates/"); jf.setSuffix(".html"); jf.setContentType("text/html;charset=UTF-8"); jf.setOrder(0); return jf; }
正常访问页面没有问题,但是我将一些公共部分提取到common.html中,在页面中使用#include("common/common.html"):
<meta http-equiv="Cache-Control" content="no-siteapp" /> #include("common/common.html") <title>角色管理</title>
controller:
private static final String basePath = "sys/role/"; @GetMapping public String toRole(){ return basePath+"admin-role"; }
访问页面之后报错如下:
java.lang.IllegalArgumentException: File not found : "templates/sys/role/common/common.html"
目录结构:
请问到底该如何设置路径?
项目:JFinal
#include("/common/common.html")
如果不添加 "/" 前缀,则是去使用该 #include 指令的那个模板的相对路径去找。
例如你这个例子中的模板是 sys/role 下的 admin-role.html ,所以会去 sys/role 下去找 common/common.html
#include 支持相对路径与绝对路径,是为了让代码量可以最省,同级路径下的模板使用时可以省去路径输入