首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
请问config中addSharedObject方法获取目录路径不对怎么办
好酷的人
2019-08-27 17:20
config中baseTemplatePath="D:/xxx/",最后发现缺少main/src/webapp,应该怎么办
项目:
JFinal
评论区
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
好的感谢
回复
发送
我要反馈
热门反馈
扫码入社
engine.setBaseTemplatePath(PathKit.getWebRootPath());
这里注意,默认被配置好 baseTemplatePath 的 Engine 对象仅限于 configEngine(Engine engine) 这个方法中的 engine 对象,如果你是自己 new Engine() 或者 Engine.use() 获取的对象,则默认是没有这个配置的
自己 new Engine() 出来的对象,一般建议配置为 engine.setToClassPathSourceFactory(),可以从 class path 与 jar 中寻找模型,将模板放在 src/main/resources 下面即可