【问题标题】:Blank Rythm output when using @extends使用@extends 时的空白节奏输出
【发布时间】:2014-02-21 15:12:59
【问题描述】:

我有一个有趣的问题。我正在尝试将 Rythm 模板引擎集成到我的 Spring MVC 应用程序中,因此我编写了一个简单的视图解析器,它调用 RythmeEngine 来呈现文件。但是,当我尝试使用 @extends(...) 时,引擎会返回一个空白渲染。我有两个模板文件:

layout.html

<!DOCTYPE html>
<html>
<head>
    <title>Rythm Sandbox</title>
</head>
<body>
    <h1>Welcome!</h1>
    @render()
</body>
</html>

节奏.html

@extends(layout)
Hello World!

我正在调用RythmEngine,如下所示:

RythmEngine eng = RythmEngineFactory.getEngine();
File f = new File(someRootPath + name + ctx.getSuffix());
resp.setContentType("text/html");
eng.render(httpResponse.getWriter(), f, model);

RythmEngineFactory.getEngine() 返回一个具有以下配置的单例RythmEngine

Map<String, Object> props = new HashMap<String, Object>();
props.put("engine.mode", "dev");
props.put("home.template.dir", myTemplateRootDirectoryPath);
return new RythmEngine(props);

问题

问题出在:如果没有节奏.html 中的 @extends(layout) 行,我会得到预期的渲染“Hello World”。但是,当我尝试扩展 layout.html 时,它会导致空白渲染(即根本没有输出)。我知道它正在查找 layout.html 文件,因为如果我将 @extends(layout) 替换为 @extends(layoutGooBlah) 之类的内容,错误消息会显示“无法通过名称 'layoutGooBlah' 找到扩展模板”。所以我知道它发现我的模板很好,但是为什么输出会是空白的??

编辑:

有趣的现象:当我改变这一行时:

eng.render(httpResponse.getWriter(), f, model);

收件人:

String s = eng.render(f, model);
httpResponse.getWriter().write(s);

它有效。 ???为什么在使用@extends时它不会写到PrintStream??

【问题讨论】:

    标签: java spring-mvc template-engine rythm


    【解决方案1】:

    API engine.render(writer, ...) 有问题。见https://github.com/greenlaw110/Rythm/issues/201

    顺便说一句,我建议您将 http://github.com/greenlaw110/spring-rythm 用于您的 Spring MVC 应用程序

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多