jfinal控制render 找不到WEB-INF下文件
设置了 me.setBaseViewPath("/WEB-INF/view");
但是在具体控制类里的render 仍然不会找/WEB-INF/view目录下的文件,
然而写 /WEN-INF/view/log4j/log4j.jsp,无论 写不写 setBaseViewPath 都能找到.
如何配置才能 直接render("log4j/log4j.jsp")就能去WEB-INF下找到呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
直接写绝对路径很好使,/WEN-INF/view/log4j/log4j.jsp
直接写绝对路径确实好使,非常感谢
回复
搞不明白你说的滥用是什么滥用,可否举例说明?这个帖子里楼主描述的已经很清楚了,我即便贴也只是跟楼主代码中的英文单词不同而已,根本毫无意义。另外这跟回答了几百个问题又有什么关系呢?
实际上可能会因为误用、环境而产生偏差。我还算一个友善的人吧,这几年帮忙解决JFinal相关的问题至少也有上百例,不想跟你争执。实在是问题没有突破口,你可以到源码里面打2个断点,看看到底是怎么走的!
第二点应该有关以“/"打头时的规则应该有误,应该是只要是以 "/" 打头就会使用绝对路径,忽略 BaseViewPath 与 ViewPath
回复
根据代码来看 是没有忽略啊??? if (baseViewPath != null) // support baseViewPath viewPath = baseViewPath + viewPath;
引用来自“JFinal”的评论
你忽略了在配置路由时的 viewPath: me.add("/abc", AbcController.class, "/path"),第三个参数就是 viewPath,如果第三个参数没有配置那么默认与 controllerKey 相同,即为 "/abc"。
基于上面的说明,当你通过 me.setBasePath("/WEB-INF/view") 设置了视图的基础路径,并且配置路径时省略了viewPath参数,那么 render("log4j/log4j.jsp") 最终的视图路径为:"WEB-INF/view/abc/log4j/log4j.jsp。
最后一个关键点,当你在 render 时,如果视图以 "/" 打头,则会忽略 viewPath,例如 render("/log4j/log4j.jsp")最终的视图路径为: "WEB-INF/view/log4j/log4j.jsp,也即忽略掉 viewPath:"/abc"。
模板路径规则:
1:模板路径 = BaseViewPath + ViewPath + render时的参数
2:当 render 时参数以 "/" 打头则模板路径 = BaseViewPath + render时的参数
3:在配置路由时如果省略第三个参数,则 viewPath = controllerKey
@
JFinal 我也遇到了相同的问题 basepath设置为 WEB-INF/web后 render时,路径前面+/不会去WEB-INF下找, 去掉/反而去找了 但多了controller
@JFinal 感谢JFinal 的回答.
setBaseViewPath("/WEB-INF/view"); render("/log4j/log4j.jsp"); 但是没去 baseviewpath+render 目录去找,在 WEB-INF 外去找的
最后一个关键点...这段说错了,然后模板路径规则第2点又说对了。 总言之,就是以'/'开头的话,baseviewpath和viewpath都无效。直接从webroot下找!
回复
@Zempty : 可能是当时手误,已更正,不过 osc 的缓存有问题,更正好的内容有时会再变回去,感谢反馈