Play Framework:如何更改播放默认包?

Ala*_*uza 33 java playframework

我只是想知道是否可以从Play更改默认包.例如:我想将"controllers"包更改为"com.test.controllers".我不知道这是否有意义,但我只是想知道如果可能的话.我在Play网站上找不到与此相关的任何内容.

小智 20

根据目前的 Play 2.0文档,现在可以:

请注意,在Play 2.0中,控制器,模型和视图包名称约定现在就是这样,并且可以根据需要进行更改(例如使用com.yourcompany为所有内容添加前缀).

这适用于空的Play应用程序,但有一些细节需要注意其他任何事情:

  1. 将自定义命名空间导入视图模板将适用于除模板第一行中声明的那些类型之外的任何类型,这些类型是从视图生成的scala 渲染函数的参数.我们的解决方法是在第一行视图模板中将完整包名添加到类型声明中.
  2. 对于路径文件中定义的每个命名空间(例如自定义包和Assets路由的默认包),Play 2.0会在同一命名空间中生成相应的路由源文件,因此在执行此操作时需要注意正确的文件.重定向.

  • 假设您有一个控制器MyController,其处理方法名为myMethod.如果将它从"controllers"包移动到"com.example.controllers",则必须在(1)Scala模板中将@ routes.MyController.myMethod()更改为@ com.example.controllers.routes.MyController .myMethod()和(2)在你的控制器类本身,将其所做的任何重定向(例如在POST表单之后)从controllers.routes.MyController.someMethod()更改为com.example.controllers.routes.MyController.someMethod( ). (3认同)
  • @ronaldwidha,你现在可能已经想到了这个,但是如果你想命名你的视图,例如,创建一个目录:apps/com/yourcompany/views,然后引用com.yourcompany.views这样的视图. (2认同)

dog*_*ane 13

手册:

Controller类必须在controllers包中定义,并且必须是play.mvc.Controller的子类 .

如果未直接在控制器包下定义,则可以在Controller类名称之前添加Java包.该控制器包本身是隐含的,所以您不需要指定它.

这意味着您无法将controllers包更改为com.test.controllers(因为根包必须是controllers),但您可以更改为controllers.com.test.

  • 现在可以了.请参阅下面的答案http://stackoverflow.com/a/9994758/808125 (3认同)

Cod*_*nci 5

更新以区分play1和2.

对于Play 1.x,这是不可能的.

不,所有控制器必须位于包或控制器的子包中.如果你想保留一个com.test包结构,你可以这样做controllers.com.test

有关详细信息,请参阅此主题.

对于Play2.x,这是可能的.

所以简单的答案是......这取决于您正在使用的Play版本.