有没有一种方法可以在播放框架中的拦截器和操作之间共享数据?
问题描述:
在玩!控制器,我可以创建一个interceptor method,它将在每个请求到达适当的操作之前处理它。有没有一种方法可以在播放框架中的拦截器和操作之间共享数据?
public class Admin extends Application {
@Before
static void checkAuthentification() {
if(session.get("user") == null) login();
// otherwise,
User loggedOnUser = User.find("byUsername", session.get("user"));
}
public static void index() {
// any way to access loggedOnUser ?
List<User> users = User.findAll();
render(users);
}
…
}
有没有办法在拦截器中设置一个值并在action中进行访问?有点像servlet中的request.setAttribute()
?
答
拦截器和操作共享相同的请求上下文(请求,响应,会话等)。如上所述,您可以选择使用renderArgs,但请记住,这些值将在您的视图中可用,这可能不是您想要的。如果你想保持拦截器和动作之间的状态,只需使用request.args散列即可。
嘿,那是一个脆弱的环节。 – itsadok
@itsadok是,短期参考:P –