2011-08-26 148 views
0

你好我創建子目錄使用動態路由,這樣的事情PlayFramework共享緩存問題

GET  /event/{nick}       EventPageController.show 

,我用它來與類似的東西

example.com/event/congres2011 
example/com/event/symposiumXI 

然後我得到在數據庫中的第一個事件並保存在一個密鑰緩存

public static void show(String nick) { 
     Event event = Event.find("byNick", nick).first(); 
     if (event == null) { 
      redirect("/"); 
     } 
     Cache.add("event", event); 
     render(event); 
    } 

但是當我請求第二個(例如/ com/event/sympo siumXI),show方法使用相同的鍵來保存新的請求事件,因此第一個事件丟失了上下文。請如何控制它,或者我可以在同一時間只使用一個事件...?

+0

而不是重定向(「/」)調用Application.index(); (或任何映射到「/」)。 Play中更好的練習。 –

回答

2

由於您正在使用靜態鍵「事件」,它將被替換。您可能希望通過使密鑰類似於nick + "event"來使其更加上下文感知。

+0

非常感謝!所以,如果我有這個GET/event/{nick} /表單,我怎樣才能從form方法獲得{nick}? –

+0

您將獲得表單方法的(String nick)參數中的值。請參閱文檔http://www.playframework.org/documentation/1.2.3/routes#Assignstaticargs – sojin

+0

類似於GET/event/{nick}/form/{nick}? ,但表單的參數應該像Post,POST/event/{nick}/form /一樣發送,我可以從/ event/{nick}/form /中獲得{nick}嗎? –