关于路径的问题( #include 是不能使用 route 设置的 setBaseViewPath())

 

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 的场景用的

  那么 除了这么解决还有什么其他方式?

评论区

热门反馈

扫码入社