NutzCN Logo
问答 关于默认模板和beetl模板的问题
发布于 2358天前 作者 文涛(wentao) 2800 次浏览 复制 上一个帖子 下一个帖子
标签:

默认模板始终有一个找不到模板

    @At("/product_list")
    @GET
    @Ok("->:/wentao/product.html")
    public void product_list() {

    }
    @At("/payfind")
    @GET
    @Ok("->:/wentao/payfind.html")
    public void pay_find() { }

以上 product_list可以正常访问,payfind访问,始终提示找不到文件,payfind的Ok备注路径修改为@Ok("->:/wentao/product.html"),也可以正常显示product的模板,怎么都找不到payfind.html

后来更换为:

    @At("/payfind")
    @GET
    @Ok("beetl:/wentao/payfind.html")
    public void pay_find() { }

成功访问打开页面,文件没动过,很奇怪。

使用后发现,原生的->模板有一个优势,修改模板不用重启即可生效,而beetl必须重启生效

那么问题来了
1、为什么采用->的方式找不到模板,而采用beetl却可以找到,路径一致
2、怎么做到修改beetl模板不用重启应用

15 回复

静态文件查找的static目录,模板文件查找的是template目录。。。

beetl是不是自己配了RESOUCELOADER? 贴一下配置看看?

嗯,我知道,我是代码特定改到一样的,都在static下

    if(maker.getClass() == BeetlViewMakerStarter.class) {
        // 获取BeetlViewMaker对象
        BeetlViewMaker beetlViewMaker = (BeetlViewMaker)maker;
        // 生成FileResourceLoader 从文件系统取资源
        FileResourceLoader fileResourceLoader = new FileResourceLoader();
        fileResourceLoader.setCharset("UTF-8");
        // 设置jar包外部模板目录
        fileResourceLoader.setRoot(IO.getBasePath() + File.separator + "static");
        // 配置beetlViewMaker使用外部目录读取模板
        beetlViewMaker.groupTemplate.setResourceLoader(fileResourceLoader);
        System.out.println("模板读取目录设置到:" + IO.getBasePath() + File.separator + "static");
    }
}

for(ViewMaker maker: nutConfig.getViewMakers()) {
    if(maker.getClass() == BeetlViewMakerStarter.class) {
        // 获取BeetlViewMaker对象
        BeetlViewMaker beetlViewMaker = (BeetlViewMaker)maker;
        // 生成FileResourceLoader 从文件系统取资源
        FileResourceLoader fileResourceLoader = new FileResourceLoader();
        fileResourceLoader.setCharset("UTF-8");
        // 设置jar包外部模板目录
        fileResourceLoader.setRoot(IO.getBasePath() + File.separator + "static");
        // 配置beetlViewMaker使用外部目录读取模板
        beetlViewMaker.groupTemplate.setResourceLoader(fileResourceLoader);
        System.out.println("模板读取目录设置到:" + IO.getBasePath() + File.separator + "static");
    }
}

加一句

fileResourceLoader.setAutoCheck(true);

可以了,thanks,补问一下,这个自动加载机制是监听文件变化更新缓存,还是每次都读取一次,不知道效率如何

还有几个配置项的, 你看看FileResourceLoader 的源码吧

好的,那NB默认的->你是不是看下,是不是有问题,我真的确定路径没错,要不我贴下日志,找不到的时候打印日志有3000多行

我想了想,是死循环了吧

默认情况下,html结尾也是匹配入口方法的

入口方法跟html的路径不要用同一个嘛。。。

添加回复
请先登陆
回到顶部