2011-08-26 149 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}吗? –