gpt4 book ai didi

java - 在 Play 中调用静态方法!框架 Controller 不工作

转载 作者:行者123 更新时间:2023-12-01 19:12:07 25 4
gpt4 key购买 nike

我有戏!具有两个包含冗余代码的操作的框架。因此,我将此代码分解为 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! 中调用其他静态方法? Controller ?

解决方案

感谢“Codemwnci”,我实现了以下解决方案:

  public static void show(long itemId, String listId) {
renderArgs.put("item", getItem(itemId, listId));
render();
}

我更喜欢 renderArgs 因为它比局部变量的意图更清晰。

最佳答案

当您将局部变量传递到 render 方法时,在传递到 Groovy View 时将使用局部变量的名称。在您的示例中,您没有传递局部变量,因此 Play 不知道为您指定的项目指定什么名称。

您有几个选择。您可以执行以下任一操作

  1. 将 getItem 的返回值设置为局部变量(item),并将 item 传递到 View 中
  2. 将 getItem 的返回值设置到 renderArgs 映射中,并指定您自己的名称。

选项 1 可能是最明智的。

关于java - 在 Play 中调用静态方法!框架 Controller 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com