我玩了!框架包含两个包含冗余代码的操作。因此,我将此代码考虑为private static
方法,但它不再适用。
public static void show(long itemId, String listId) {
render(getItem(itemId, listId));
}
private static Item getItem(long itemId, String listId) {
// otherwise duplicate code ...
return item;
}
如果我将getItem
中包含的代码内嵌到show
操作中,一切都很好:
// this works
public static void show(long itemId, String listId) {
Item item = // duplicate code ...
render(item);
}
为什么我不能在Play中调用其他静态方法!控制器?
解决方案
感谢'Codemwnci',我实施了以下解决方案:
public static void show(long itemId, String listId) {
renderArgs.put("item", getItem(itemId, listId));
render();
}
我更喜欢renderArgs
因为它使意图比局部变量更清晰。
答案 0 :(得分:4)
将局部变量传递给render方法时,在传递给Groovy视图时会使用局部变量的名称。在您的示例中,您没有传递局部变量,因此Play不知道为您指定的项目指定的名称。
你有几个选择。你可以做任何一件事
选项1可能是最明智的。