renderArgs在模板中为null!骨架

时间:2011-10-10 05:12:38

标签: groovy playframework template-engine

我有一个像这样的控制器功能

public static void renderCustomersList() {
        System.out.println("renderArgs"+renderArgs.toString());
        render(renderArgs);
    }

在我的groovy模板中

renderArgs $ {renderArgs.toString()}

我在我的控制台中打印了带有值的renderArgs,但是当我传递给模板时,它的打印为null。我想在main.html中使用这些值。我在renderCustomersList.html和main.html中打印了renderArgs,两个模板上的值都为null。可能是错误。

2 个答案:

答案 0 :(得分:6)

您无需将renderArgs作为参数传递给render函数 - 无论如何,renderArgs范围内的所有变量都将在模板中可用。但是,不是在模板中访问renderArgs对象本身,而是转而使用独立值 - 请参阅下文。

控制器:

public static void renderCustomersList() {
    ... // some code to initialize yourVariable
    renderArgs.put("yourVariable", yourVariable);
    render(); // renderArgs not needed as a parameter
}

在模板中:

${yourVariable}

答案 1 :(得分:2)

另请注意,如果您不想,则不必使用renderArgs用户。您也可以将一些参数传递给render(),如下所示:

public static void renderCustomersList() {
    ...
    render(customers, products, foobar); 
}

然后您可以使用变量名称获取模板中的这些参数:

#{list items:customers, as:cust}
...
Foobar: ${foobar}

需要使用renderArgs的唯一情况是,您希望在模板中使用与控制器中的参数不同的名称。这可能会令人困惑,所以我尽量不这样做。