【问题标题】:Routes and subpackages in controllers控制器中的路由和子包
【发布时间】:2013-06-09 14:24:02
【问题描述】:

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

我在controllers 包中有一个子包messages,其类为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 中使用过子包,它工作得很好,有人能发现我的配置中的任何错误吗?

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

【问题讨论】:

    标签: java routes playframework-2.1


    【解决方案1】:

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

    此外,Java 编码约定规定类必须以大写字母开头。

    【讨论】:

    • 类名是复制/粘贴/编辑失败,但这有效!感谢src_managed 的提示
    【解决方案2】:

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

    routes.conf 看起来像:

    GET  /admin/stuff  controllers.admin.StuffController.show()
    

    代码如下:

    controllers.admin.routes.StuffController.show()
    

    【讨论】:

      【解决方案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

      【讨论】:

        猜你喜欢
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        • 2013-12-14
        • 1970-01-01
        • 2023-03-22
        • 2017-12-16
        • 2017-02-27
        • 1970-01-01
        相关资源
        最近更新 更多