在play框架中包含模块路由

时间:2011-08-01 05:03:41

标签: routes playframework

我在我的播放应用程序中创建了一个模块,模块的结构是

对myApp /应用/助洗剂/模块/设计

在myApp dependencies.yml中,我已经给出了

# Application dependencies

require:
    - play
    - design -> design

repositories:
    - My modules:
        type:       local
        artifact:   /var/www/html/myApp/app/builder/modules/design
        contains:
            - design

在myApp路线中

GET     /                                       Application.index
GET     /home                                   Application.index
GET     /design                                 module:design.index

应用程序成功运行但是当我访问设计模块中的设计页面时,它会抛出错误

10:13:58,247 ERROR ~ Cannot include routes for module design.index (not found)

我该怎么做才能解决此错误。

当我在application.conf

中添加模块规范时
module.design=/var/www/html/myApp/app/builder/modules/design

然后它会抛出错误

The file {module:design}/app/controllers/Design.java could not be compiled. Error raised is : The declared package "builder.modules.design.app.controllers" does not match the expected package "controllers"

4 个答案:

答案 0 :(得分:1)

@pere我创建了设计页面并将设计控制器包名称修改为

app.builder.modules.design.controllers

并在application.conf中添加了

module.design:app/builder/modules/design

并在dependencies.yml中作为

require:
    - play
    - myApp -> design

运行时,控制台在application.conf中显示弃用 并在下一行提供模板设计

但显示同样的错误然后我 我剪切了构建器文件夹并放入myApp文件夹,并将设计控制器包名称更改为控制器和 application.conf

module.design:builder/modules/design

然后一切正常

我发现错误在于命名包 所以我再次切入app文件夹并将设计控制器包名称更改为

builder.modules.design.app.controllers

当我运行应用程序时显示

The file {module:design}/app/controllers/Design.java could not be compiled. Error raised is : The declared package "builder.modules.design.app.controllers" does not match the expected package "controllers"

可能是错误

答案 1 :(得分:1)

我们在游戏1.2.4中遇到了同样的问题

我们通过dependencies.yml导入模块并得到相​​同的错误。 然后,我们从deps.yml中删除它们,然后通过application.conf导入。

有效,但已被弃用。

答案 2 :(得分:0)

我认为您的问题与控制器的位置有关。控制器应该在包装“控制器”下。它可以是“controllers.subpackage1.subpackage2 ......”

您的控制器似乎没有遵循该模式

答案 3 :(得分:0)

我遇到了类似的问题并且发现问题发生的原因是我的模块名称中有连字符,然后我将其更改为下划线并且工作正常。

我现在无法测试它,但如果我有空闲时间,我会测试是否是因为项目名称中的点。