为什么这里呈现的模板不正确?

时间:2012-01-09 10:00:58

标签: java controller playframework

我正在使用一些参数调用render(),其中第一个参数是String参数:

public static void action(String url){   ...

渲染(URL,...); }

我收到了这个错误:

The template http://the.contents.of/urlParameter does not exist.

现在,我正在通过render()调试,我看到了这个片段:

protected static void render(Object... args) {
    String templateName = null;
    if (args.length > 0 && args[0] instanceof String && LocalVariablesNamesTracer.getAllLocalVariableNames(args[0]).isEmpty()) {

        // I'm getting into this branch

        templateName = args[0].toString();
    } else {
        templateName = template();
    }
    renderTemplate(templateName, args);
}

if试图完成的是什么?我为什么要进入它 - 是因为我没有为url使用局部变量?这记录了吗?这是什么原因?

我使用的是1.2.x-c40cf37版本(在1.2.4之后的某个地方)。

1 个答案:

答案 0 :(得分:3)

如果您提供一个字符串作为第一个参数,那么它假定它是要呈现的模板的名称。

示例:

render("@password", url);

这将呈现密码模板并将url变量传递给它。

在你的情况下,你可以做这样的事情:

render("@action", url);

编辑:

作为替代方案,您也可以这样做:

renderArgs.put("url", url);
render();

希望它有所帮助。