请问config中addSharedObject方法获取目录路径不对怎么办

config中baseTemplatePath="D:/xxx/",最后发现缺少main/src/webapp,应该怎么办

评论区

JFinal

2019-08-27 17:25

config 中的 baseTemplatePath 默认是被配置好的,不需要自己改变它,如果你一定要配置,可以这样:
engine.setBaseTemplatePath(PathKit.getWebRootPath());

这里注意,默认被配置好 baseTemplatePath 的 Engine 对象仅限于 configEngine(Engine engine) 这个方法中的 engine 对象,如果你是自己 new Engine() 或者 Engine.use() 获取的对象,则默认是没有这个配置的

自己 new Engine() 出来的对象,一般建议配置为 engine.setToClassPathSourceFactory(),可以从 class path 与 jar 中寻找模型,将模板放在 src/main/resources 下面即可

好酷的人

2019-08-27 17:34

@JFinal 在配置Enjoy模板引擎时,idea下获取的baseTemplatePath="D:/projcet/projectName/WEB-INF/view/common/templete/_layout.html"
预期想得到的(正确的)是:"D:/projcet/projectName/src/main/webapp/WEB-INF/view/common/templete/_layout.html"

JFinal

2019-08-27 17:45

一般不建议手动配置 baseTemplatePath,如果确实想配置,用下面的代码:
void configEngine(Engine engine) {
engine.setBaseTemplatePath(PathKit.getWebRootPath() + "/WEB-INF/view");
engine.addSharedFunction("common/template/_layout.html");
}

然后在 render 时候,基于上面的配置使用相对路径即可:
render("index/index.html");

JFinal

2019-08-27 17:47

不手动配置 baseTemplatePath 的用法如下:
void configEngine(Engine engine) {
engine.addSharedFunction("/WEB-INF/view/common/template/_layout.html");
}

在配置路由时指定一个 baseViewPath 则可以很方便使用 render 方法了:
void configRoute(Routes routes) {
routes.addBaseViewPath("/WEB-INF/view");
routes.add("/", IndexController.class, "/index");
routes.add("/blog", BlogController.class, "/blog");
}

最后在 render 的时候:
render("index.html");
render("blog.html");

这些在文档中都有,一定要先仔细看

好酷的人

2019-08-27 17:53

@JFinal 您好,我的确是仔细看文档来进行操作的,但是我发现问题好像是由于我建立了两个模块,子模块拿不到main/src/webapp部分的路径

好酷的人

2019-08-27 17:58

@JFinal me.addSharedObject("path", JFinal.me().getContextPath()); 我想拿到父模块中的子模块路径,debug中发现baseBaseTemplatePath="D:/父模块项目name/子模块项目name 缺少mian/src/webapp这部分路径

好酷的人

2019-08-27 18:14

@JFinal eclipse完美运行,可以获取到正确的路径,作为小白就不清楚了

JFinal

2019-08-27 18:56

参考文档中的方法
https://www.jfinal.com/doc/1-5

好酷的人

2019-08-28 09:17

@JFinal 十分感谢,IDEA上已解决,通过设置working directory为子模块路径

JFinal

2019-08-28 09:57

@好酷的人 IDEA 下多模块找不到模板文件,需要按文档进行设置:
https://www.jfinal.com/doc/1-5

注意看第三小节:《3、 maven 多模块项目启动报错》

这里还有相关的分享:
http://www.jfinal.com/share/1285

好酷的人

2019-08-28 14:48

@JFinal 好的感谢