2013-03-05 35 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