2011-06-27 25 views
5

我正在使用Java的Play应用程序的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

如何使用这些子包配置路由?我试过像: - GET/controllers.Account.Application.index但它不工作的帐户是我的子包。 –

回答

1

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

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

除此之外,你可以在视图名称始终传递给渲染()调用:

render("Account/index.html"); 

我个人一直坚持到与游戏提供内置的结构。否则,你可以很容易地结束了在重构地狱,当你的地方重新安排你的控制器结构的道路......

0

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

5

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

控制器

的反向查找将 '控制器' 和 '路线' 之间的包名称:

controllers.account.routes.Account.index 

例如在视图控制器中

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

查看引用

包名称如下的意见。HTML':

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

如何使用这些子包配置路由?我试过像: - GET/controllers.Account.Application.index但它不工作的帐户是我的子包。 –

0

如果想从一个视图 引用位于子包的控制器,并使用一些结构这样

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

和在CONF /路由配置为

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

可以使用以下内容来创建链接到方法你好从视图

<a href="@com.company.system.controllers.routes.MyController.hello">Hello!</a>