maven web 多模块 项目
升级3.4 并更换 jfinal enjoy 模板引擎重写页面了
1. configEngine() 中 未设置 setBaseTemplatePath 则默认是 src/main/webapp
2.
设置
public void configRoute(Routes me) {
me.add(new SystemRoutes().setBaseViewPath("/WEB-INF/"));
}
3.
SystemRoutes类中 设置
public void config() {
this.add("/index", IndexController.class,"/");
}
4.
IndexControll 中的方法
public void index(){
this.render("views/index/index.html");
}
截至上面第4部 能访问到页面里 没有问题;
好了 下面是问题
5.
部分页面目录结构如下:
WEB-INF/views/inidex/index.html
WEB-INF/common/_include/_header.html
在index.html 页面中有个 include 指令
#include("common/_include/_header.html")
common前面 加不加 / 都报错 路径不对;
没有 / 的时候报错 找不到;如下所示
\src\main\webapp/WEB-INF/views/index/common/_include/_header.html
很明显路径不对,因为他是根据当前路径找的;
根据文档说明 加上/ 是从 setBaseTemplatePath 的默认路径下开始寻找
那么只要加上/WEB-INF/ 变成
#include("/WEB-INF/common/_include/_header.html")
就没有问题了
问题:
那么 在所有的 #include 引入页面的时候 都需要加上 WEB-INF 感觉很不好!
在不想再页面上 使用 WEB-INF 的情况下,做什么样的修改可以解决这个问题?
分析:出现这个问题的根本原因在于 #include 不能使用 route 设置的 setBaseViewPath()的 ;
解决方案:
在 configEngine()中
me.setBaseTemplatePath(me.getBaseTemplatePath()+"/WEB-INF/");
然后就不需要设置 setBaseViewPath了;
页面上 只要 #include("/common/_include/_header.html") 即可
又一个 问题: 在 http://www.jfinal.com/share/263
中 波总 说
configEngine(Engine engine) 这个方法内不建议配置 engine.setBaseTemplatePath(...),因为这个配置是留给独立使用 template engine 的场景用的
那么 除了这么解决还有什么其他方式?