2013-03-05 36 views
0

使用Play 2.1.0,我有一个Java控制器,其中的操作负责呈现任意的html视图。以编程方式呈现Play 2.0视图

例如:

class HtmlClientViews extends Controller {  
    public static void getView(String viewName) { 
     return ok(/*How to render the view programatically?*/) 
    } 
} 

而且在我的意见我有一个名为account.html.scala视图。

我有这样一个路径:

GET /htmlclient/*viewName  controllers.HtmlClientViews.getView(viewName) 

如果我作出这样/htmlclient/account.html请求我想渲染名为account.html.scala

认为我没有试过还没有为此使用Java反射机制,但想知道什么是实现这一目标的最有效方法。

+0

对于这个:account - > views.html.account()是否可以使用Map ? – 2013-03-05 13:51:00

+0

我虽然关于那也,但将不得不保持该地图...寻找一个更可维护的解决方案,如果存在 – 2013-03-05 14:06:01

+0

我不知道任何简单的解决方案没有反思:( – 2013-03-05 14:11:48

回答

1

你可以做到这一点:

  1. 反射,像Play Authenticate使用样本中,有它用于选择根据检测到的语言
  2. 如果你已经知道的观点号码,您可以使用简单的开关不同的看法在控制器中的语句返回视图a,b,cd
  3. 同样在没有的情况下。 2 - 您可以在视图中使用matching语句,以根据某些变量包含子视图。
+0

将与简单的Java反射去。 – 2013-03-05 22:23:58