include找不到模板

如果是 demo+项目文件 (一级文件夹)#include("/include/incBase.html");可以找到模板,如果是二级的demo/demo1/

比如在文件夹下 demo/demo1/+项目文件 (二级文件夹)  #include("/include/incBase.html")这样就不能找到模板。


 #include("#(ctx)/include/incBase.html");这么写 又无法解析

#(ctx)


=========是不是tomcat不允许二级目录项目========

加入一级目录的话 自动会增加上的#include("/demo/include/incBase.html")



评论区

JFinal

2017-07-04 18:32

jfinal template engine 有一个 baseTemplatePath,如果不设置的话,默认就是项目的 webapp 根目录,这是一个关键点

另一个关键点是 #include(fileName) 中的 fileName 以 "/" 打头时是从 baseTemplatePath 为起点去找模板文件,否则是与使用 #include(...) 指令的模板文件同级目录为起点开始找

淡定007

2017-07-05 09:14

@JFinal 首先非常感谢您的回复。

淡定007

2017-07-05 09:23

@JFinal Engine.use().getTemplate(target).render(map, response.getWriter());
BaseTemplatePath是null。
me.setBaseTemplatePath(PathKit.getWebRootPath());也不管用。
我是看网上这么写的
public class HtmlHandler extends Handler {
Engine engine = Engine.use();

{
engine.setBaseTemplatePath(PathKit.getWebRootPath());
engine.setEncoding("UTF-8");
}

@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
//必须先设置,但无效 me.setBaseTemplatePath(PathKit.getWebRootPath());
response.setCharacterEncoding("UTF-8");
if (target.endsWith(".html")) {
try {
Map map = new HashMap();
map.put("jia", "1");
Engine.use().getTemplate(target).render(map, response.getWriter());
} catch (IOException e) {
e.printStackTrace();
}
isHandled[0] = true;
} else {
next.handle(target, request, response, isHandled);
}
map是不增加了 不增加 null 不行。

淡定007

2017-07-05 09:24

@JFinal 并且这么写的话
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
request.setAttribute("title", "环境监管网络平台");
next.handle(target, request, response, isHandled);
}
这个不起作用了

JFinal

2017-07-05 10:57

Engine 对象在不同模块中是独立的,你在 configEngine(Engine me) 中配置的这个 engine 与你使用 Engine.use() 得么的 Engine 不是同一个对象

因此你使用 Engine.use().getBaseTmplatePath() 是 null 值,正确的姿势是:
RenderManager.me().getEngine() 得到的 Engine 对象与 configEngine(Engine me) 中配置的才是同一个对象

一定要注意看 jfinal 手册,这些都有红色字体说明过

热门反馈

扫码入社