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

Mar*_*ark 5 java model-view-controller controller view playframework

我在Java中使用Play Framework作为Web应用程序.

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

|- controllers
   |- account
      |- Account.java
Run Code Online (Sandbox Code Playgroud)

虽然我的观点组织如下:

|- views
   |- Account
      |- index.html
Run Code Online (Sandbox Code Playgroud)

Account.java文件包含:

package controllers.account;

import play.mvc.Controller;

public class Account extends Controller {

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

}
Run Code Online (Sandbox Code Playgroud)

我想要有以下行为:

当发出请求时http://localhost/account/{action},它被重定向到Account.java显示Account文件夹中视图的控制器.

有小费吗?

Mat*_*att 7

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

反向查找控制器

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

controllers.account.routes.Account.index
Run Code Online (Sandbox Code Playgroud)

例如在一个视图中

<a href="@controllers.account.routes.Account.index" class="btn">Exit</a
Run Code Online (Sandbox Code Playgroud)

查看控制器中的引用

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

return ok(views.html.account.index.render());
Run Code Online (Sandbox Code Playgroud)


And*_*eis 1

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

|- views
   |- account
      |- Account
         |- index.html
Run Code Online (Sandbox Code Playgroud)

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

render("Account/index.html");
Run Code Online (Sandbox Code Playgroud)

我个人会始终坚持游戏所提供的内置结构。否则,当您重新安排控制器结构时,您很容易陷入重构地狱......