我想知道是否可以更改Play的默认包。例如:我想将"controllers"包更改为"com.test.controllers"。我不知道这是否有意义,但我只是想知道是否可能。我在Play官网上没有找到相关信息。
我想知道是否可以更改Play的默认包。例如:我想将"controllers"包更改为"com.test.controllers"。我不知道这是否有意义,但我只是想知道是否可能。我在Play官网上没有找到相关信息。
对于空的Play应用程序,这很有效,但是对于其他内容需要注意以下几点:请注意,在Play 2.0中,控制器,模型和视图包名称约定只是约定俗成的,如果需要可以更改(例如,使用com.yourcompany为前缀)。
来自手册:
一个控制器类必须定义在controllers包中,并且必须是play.mvc.Controller的子类。
如果未直接在控制器包下定义,您可以在控制器类名之前添加Java包。默认情况下,controllers包是隐式的,因此您不需要指定它。
这意味着您无法将controllers
包更改为com.test.controllers
(因为根包必须是controllers
),但您可以更改为controllers.com.test
。
更新以清晰区分play1和2。
对于Play 1.x,这是不可能的。
不,所有控制器必须在一个包或控制器的子包中。如果您想保持 com.test
包结构,可以使用 controllers.com.test
。
有关更多信息,请参见此线程。
对于Play2.x,这是可能的。只需将所有内容移动到所需的包中。确保最外层的app/
目录保持在外面。例如:play-project/app/com.company/controllers
。
因此简单的答案是...它取决于您使用的Play版本。
虽然回答晚了,但对于那些在2022年遇到相同情况的人来说,这是可能的,使用Play 2.8.x Scala文档,但也适用于Java。
您可以定义自己的自定义包com.test.controllers(甚至可以在根目录App文件夹中定义)。 然后需要为其类定义路由以匹配反向路由,如文档所述。
例如,如果您定义了一个类foo.java,它具有可在端点/index上访问的方法index,则您的路由文件必须像这样反映它:
GET /index com.test.controllers.foo.index
你可以使用助手(反向路由)从HTML文件中访问它,如下所示:
@com.test.controllers.routes.foo.index()
app
、conf
、public
和test
都在com/yourcompany
下,但sbt似乎无法编译这些文件夹中的任何.java文件。我找不到任何相关文档。 - ronaldwidha