怎么玩玩!任意子包中的控制器

时间:2011-06-27 21:19:35

标签: java model-view-controller view controller playframework

我正在使用Java框架中的Play框架。

我想将一个帐户控制器放在“帐户”子包中,例如:

|- controllers
   |- account
      |- Account.java

虽然我的观点组织如下:

|- views
   |- Account
      |- index.html

Account.java文件包含:

package controllers.account;

import play.mvc.Controller;

public class Account extends Controller {

    public static void index() {
        render();
    }

}

我想要有以下行为:

当向http://localhost/account/{action}发出请求时,会将其重定向到Account.java控制器,该控制器会在Account文件夹中显示该视图。

任何提示?

4 个答案:

答案 0 :(得分:6)

如果你确实创建了一个包结构,请注意有一些不明显的新语法:

反向查找控制器

将包名放在'controllers'和'routes'之间:

controllers.account.routes.Account.index

E.g。在视图中

<a href="@controllers.account.routes.Account.index" class="btn">Exit</a

查看控制器中的引用

包名称跟在'views.html'之后:

return ok(views.html.account.index.render());

答案 1 :(得分:1)

您是否尝试将视图放在与控制器结构相匹配的结构中?

|- views
   |- account
      |- Account
         |- index.html

除此之外,您始终可以将视图名称传递给render()调用:

render("Account/index.html");

我个人总是坚持使用游戏提供的内置结构。否则当你在路上的某个地方重新安排你的控制器结构时,你很容易陷入重构地狱......

答案 2 :(得分:0)

您需要在conf / routes上定义路由。就像是: * / account / $ {action} account.Account。$ {action}

答案 3 :(得分:0)

如果要从视图中引用位于子包中的控制器 并使用像这样的结构

  |- com
    |- company
      |- system
        |- controllers
          |- MyController
  |- views
    |- index.html

和在conf / routes中配置的路由为

GET        /api/hello com.company.system.controllers.MyController.hello 

可以使用以下命令从视图

创建方法hello的链接
<a href="@com.company.system.controllers.routes.MyController.hello">Hello!</a>