我正在使用Play框架2.1,我得到了一个奇怪的错误
我正试图在子文件夹中移动控制器,es:
controllers->
- Application.java
- 页面 - >
- - - -Index.java
- - - -Second.java
在我有的路线:
GET / controllers.pages.Index.main();
错误:
value main不是object controllers.pages.Index
的成员
这是一个错误?关于尼古拉
的解决
发现错误:您无法访问父类的方法,您必须覆盖它们:
public static Result main(String page, String method)
{
return ParentClass.main(page,method);
}
答案 0 :(得分:1)
我认为它在最终的Play 2.1中没有修复(或者我错过了一些东西) - 在子类中没有“覆盖”的方法的路由仍然会返回错误。
Java中的AFAIK实际上无法覆盖静态方法。
无论如何......请记住,按设计设计的所有操作都是静态方法,因此,您只需使用Child.methodOfParent()
即可使用Parent.methodOfParent()
的路径,您显示为解决方案应该被视为overloading
而不是overriding
。
另一方面,从我的观点来看,我宁愿建议不要使用这种模式。 Play的动作应该是独立于其他动作的独立方法,如果你需要在两个动作中使用(几乎)相同的功能,那么使用其他静态方法(不是动作)就更好了。在新的utils
包中使用params处理两个操作的主体。恕我直言,这将是更安全的方法,你可以看到 - 仍然有一些'未知'。