render html出不来

波总好,controller里面渲染基础html,出不来,论坛搜了下,看了这篇文章 https://www.jfinal.com/doc/3-7


对比自己的项目,还是不行,webapp下的目录结构是这样

└── webapp
    └── _view
        └── index.html

配置类里面

    public void configRoute(Routes me) {
        me.add("/", IndexController.class, "/");
    }

    public void configEngine(Engine me) {
        me.setBaseTemplatePath("_view");
        me.setToClassPathSourceFactory();
        me.setDevMode(true);
    }


控制器里面

public class IndexController extends Controller {
    public void index() {
        render("index.html");
    }
}


按照文档里面说的,我这个调用应该是调用 webapp/_view/index.html的内容,但是启动以后,直接提示500错误,断点看,路由是到了,应该是没找到这个html文件

评论区

水货

2020-03-25 10:50

用这个解决了
me.setBaseTemplatePath(me.getBaseTemplatePath() + "/_view");

JFinal

2020-03-25 10:52

me.setToClassPathSourceFactory() 是去jar 包和 Class Path 下读文件,而你的 html 仍然放在了 webwebapp 下

水货

2020-03-25 11:00

谢谢波总的回复,我再看看

JFinal

2020-03-25 12:24

configEngine(Engine me) 中不建议配置:
me.setBaseTemplatePath(...);

因为这个配置是留给非 web 环境以及 me.setToClassPathSourceFactory() 两种情况下使用的:
https://jfinal.com/doc/6-11

你希望配置的这个 "_view" 值,完全可以在 configRoute(Routes routes) 中通过下面的方法配置:
routes.setBaseViewPath("/_view");

注意,如果 Routes 被拆分过,要在各自的 routes 中都配置一次:
setBaseViewPath("/_view");

水货

2020-03-25 13:16

感谢波总,现在按照这个没问题了
然后现在弄fatjar,按照首页里面的例子,跑起来了,但是还是在正常状态下能显示的html页面,fatjar显示不了了,提示500

engine部分,我把这两行添加进去了
me.setBaseTemplatePath("wepapp");
me.setToClassPathSourceFactory();

然后webapp目录移到了resources下面

pom.xml里面,maven-shade-plugin插件启用了,不知道从哪里入手分析问题

水货

2020-03-25 17:19

拼错了,wepapp。。。。。。。