NutzCN Logo
问答 4.0中关于 beetl模板在linux下找不到问题
发布于 2300天前 作者 shuxinyun 2357 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk

首先如下问题在window环境下运行正常,部署到linux环境下运行就发生的。
都是通过build.py打包后运行的 jar包

我在beetl根目录下写了个模板/pages/container.html
入口调用:

@At(value = {"/?/admin/page/?"},top = true)
@Ok("beetl:/pages/container.html")
@RequiresAuthentication
public Object page(String appName,String pageId,@Param("..") NutMap params,HttpServletRequest req) {
       return NutMap.NEW();
}

没有问题。

但是如果通过代码的方式
Template template=Globals.groupTemplate.getTemplate("/pages/container.html");
template.binding("obj", NutMap.NEW());
String html=template.render();
则报找不到模板文件:
04:36:28:错找不到指定模板或者加载错(TEMPLATE_LOAD_ERROR): 位于0行 资源:/pages/container.html模板根目录为 /data/epei/tmp/webinf/WEB-INF/views
WebAppResourceLoader,Root=/data/epei/tmp/webinf/WEB-INF/views
上面根目录在linux下确实没有

这里的Globals.groupTemplate在setup中通过如下方式获取

 //抓取Beetl的BeetlViewMaker获取模板组实例并设置为全局变量
            for (ViewMaker vm : config.getViewMakers()) {
                if (vm instanceof BeetlViewMaker) {
                    Globals.groupTemplate = ((BeetlViewMaker) vm).groupTemplate;
                }
            }
9 回复

tomcat?没自动解开war文件?

jetty,linux 下好像没有

是.jar包,直接通过build.py生成的

噢,jar包,改一下beetl.properties,用classpathloader及相应的路径试试

beetl.properties配置如下

RESOURCE_LOADER=org.nutz.plugins.view.beetl.WebappResourceLoader2
ENGINE=org.beetl.core.engine.DefaultTemplateEngine
RESOURCE.root= /WEB-INF/views
RESOURCE.functionSuffix = html
RESOURCE.autoCheck= true
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>

FT.escape=cn.wizzer.framework.view.beetl.HtmlEscapeFormat

如何修改设置呀

RESOURCE_LOADER 改成ClassPathResourceLoader, 然后RESOURCE.root改成jar里面的路径

RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader
ENGINE=org.beetl.core.engine.DefaultTemplateEngine
RESOURCE.root= /WEB-INF/views
RESOURCE.functionSuffix = html
RESOURCE.autoCheck= true
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>

idea下系统启动就报错

@wendal 谢谢了,解决了,是我的其他代码错误。

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