1


我正在使用 play framework 2.1,但出现了一个奇怪的错误。
我正在尝试将控制器移动到子文件夹中,例如:

控制器 ->
- Application.java
- 页面 ->
- - - -Index.java
- - - -Second.java


在路线中我有:

GET / controllers.pages.Index.main();

错误:

值 main 不是对象 controllers.pages.Index 的成员


这是一个错误?关于尼古拉



发现已解决 的错误:您无法访问父类的方法,您必须覆盖它们:

public static Result main(String page, String method)
{
    return ParentClass.main(page,method);
}
4

1 回答 1

1

我认为它在最终 Play 2.1 中没有得到修复(或者我错过了一些东西)——在子类中没有“覆盖”的方法的路由仍然返回错误。

Java 中的 AFAIK 根本不可能真正覆盖静态方法。

无论如何......请记住,所有设计操作都是静态方法,因此,您不需要使用路由,Child.methodOfParent()而您可以使用Parent.methodOfParent(),您作为解决方案展示的东西应该被视为overloading而不是overriding.

另一方面,从我的角度来看,我宁愿建议根本不要使用这种模式。Play 的动作应该是独立于其他动作的独立方法,如果您需要在两个动作中使用(几乎)相同的功能,使用其他静态方法(不是动作)可能是更好的概念,即。在新utils包中使用参数处理两个动作的主体。恕我直言,这将是一种更安全的方法,正如您所看到的 - 仍然存在一些“未知数”。

于 2013-02-11T07:48:42.157 回答