控制器中的路由和子包

时间:2013-06-09 14:24:03

标签: java routes playframework-2.1

我正在使用Play 2.1,我遇到了一些奇怪的问题。

我在messages包中有一个子包controllers,其中包含一个类i18n.java

我的routes文件如下所示:

GET     \    controllers.messages.i18n.index()
POST    \    controllers.messages.i18n.process()

我现在有一个表单,其中包含以下操作:

@helper.form(action = routes.messages.i18n.process())

但这给了我一个错误:

value messages is not a member of object controllers.routes

我之前在Play 2.0.4中使用过子包,它运行得很好,有人能在我的配置中发现任何错误吗?

路径文件不会抱怨它找不到控制器。

3 个答案:

答案 0 :(得分:19)

路线应为controllers.messages.routes.i18n.process()。您可以检查target/scala-2.10/src_managed目录以发现生成的文件。

有关信息,Java编码约定表明类必须以大写字母开头。

答案 1 :(得分:11)

仅供参考,在2.2中它略有不同。

routes.conf看起来像:

GET  /admin/stuff  controllers.admin.StuffController.show()
代码中的

看起来像:

controllers.admin.routes.StuffController.show()

答案 2 :(得分:3)

对于Play 2.4.6 Java用户:

让我们说你的控制器(应用程序)和操作(注销)是com.stackoverflow.play.Application.logout()

要在模板(*.scala.html)中使用它,请执行@com.stackoverflow.play.routes.Application.logout(例如<a href="@com.stackoverflow.play.routes.Application.logout()"><form action="@com.stackoverflow.play.routes.Application.logout()" method="post">)。

阅读此链接的底部:https://playframework.com/documentation/2.4.x/JavaRouting