我有一个像这样的控制器功能
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。可能是错误。
答案 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
的唯一情况是,您希望在模板中使用与控制器中的参数不同的名称。这可能会令人困惑,所以我尽量不这样做。