Play Framework - 平台限制:参数列表的长度不能超过 254

Play Framework - Platform restriction: a parameter list's length cannot exceed 254

我刚刚将一个播放框架应用程序从 2.5.13 更新到 2.6

我已设法按照迁移指南进行操作,并将其他所有内容都从头开始,但是我找不到解决以下错误的方法:

Platform restriction: a parameter list's length cannot exceed 254.

我的路由文件相当大,但这在以前的版本中不是问题。

我认为这个错误是 Play Framework 为阻止路由文件变得太大而设置的一个限制,但是当以前的版本允许它时它似乎毫无意义。

我还看到您可以使用模块拆分路由文件,但是在这种情况下这是不可能的,理想情况下应该有一种方法可以避免完全重建应用程序的开销。

有没有办法在没有模块的情况下拆分路由文件或针对此错误的简单修复?

回答我自己的问题,以防其他人在他们的 Play 应用程序增长时遇到类似的问题。

@marcospereira 是对的,生成的路由器处理的路由太多。

您可以成功拆分路由文件,而无需创建模块的痛苦和矫枉过正。

因为我已经在应用程序的不同部分为控制器设置了包,所以很容易为每个控制器创建一个 package.routes 文件。

将原始路由文件清空到相关子路由文件中并URL进行相应调整后,应用程序构建成功。

对于第一次执行此操作的人来说可能不太明显的一点是,您需要确保每个路由文件与包含它们正在拆分的控制器的包相匹配。

例如,如果您有一个名为 admin 的管理控制器包,您可以在 /conf 文件夹中创建一个名为 admin.routes 的路由文件。

It must be packagename.routes.

文件/conf/routes:

GET     /                       controllers.Home.index
->      /admin                  admin.Routes
->      /user                   user.Routes

文件/conf/admin.routes:

GET    /                        controllers.admin.Admin.index
GET    /analytics               controllers.admin.Analytics.dashboard

文件/conf/user.routes:

GET    /                        controllers.user.User.index
GET    /profile                 controllers.user.User.profile

Important to remember that the GET / in each package.routes is equivalent to /package/ from the original routes file.