我正在使用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
文件夹中显示该视图。
任何提示?
答案 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>