spring boot集成enjoy 路径问题

按照一些文章的代码设置如下:

@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"

目录结构:

image.png

请问到底该如何设置路径?  

评论区

JFinal

2018-05-30 22:18

#include("common/common.html") 中的参数要添加 "/" 前缀,改成这样:
#include("/common/common.html")

如果不添加 "/" 前缀,则是去使用该 #include 指令的那个模板的相对路径去找。

例如你这个例子中的模板是 sys/role 下的 admin-role.html ,所以会去 sys/role 下去找 common/common.html

#include 支持相对路径与绝对路径,是为了让代码量可以最省,同级路径下的模板使用时可以省去路径输入

weiyie

2018-05-31 10:02

@JFinal 我试过用绝对路径,但是直接提示是File not found : "common/common.html"

weiyie

2018-05-31 10:28

@JFinal 刚测试了下,竟然发现使用#include("/templates/common/common.html") 成功了

JFinal

2018-05-31 12:28

@weiyie 那就是 spring 支持的 jf.setPrefix("/templates/"); 这行代码有影响,去掉这行代码,改成下面的代码即可:
JFinalViewResolver.me().getEngine().setBaseTemplatePath("/templates/");

记得搞定后回来反馈一下

weiyie

2018-05-31 14:14

@JFinal 是的,去掉jf.setPrefix("/templates/"); 添加jf.setBaseTemplatePath("/templates/"); #include()中不用再写/templates/,我感觉与spring集成时只写setBaseTemplatePath更合适,不然既然添加了setPrefix("/templates/");,在include中还要再去写"/templates/"是不合理的!

JFinal

2018-05-31 21:51

@weiyie 这个在使用 jf.setSourceFactory(new ClassPathSourceFactory()); 这行配置以后确实是一个问题

但如果用户在使用 Spring 时,没有配置 ClassPathSourceFactory 这个东东,那么 setPrefix(...) 这个配置还有别的作用,比较纠结

JFinal

2018-05-31 21:57

@weiyie 目前是在文档中进行了说明:
http://www.jfinal.com/doc/6-10

weiyie

2018-06-01 14:18

热门反馈

扫码入社