当用户回到他们的会话时,我有一个监听器检查一些get参数(表示身份验证)。问题是我不能从那一点重新初始化UI逻辑(我相信)因为它不在UIDL事务中。无论如何,我的UI在它第一次调用UI.getCurrent()时就会抛出NPE。
如何在每次刷新页面时获得安全挂钩?
答案 0 :(得分:2)
Vaadin 7.2在refresh(VaadinRequest)
中引入了一个名为UI
的方法,当UI
具有@PreserveOnRefresh
注释时,在浏览器刷新后调用该方法。
答案 1 :(得分:1)
我无法找到一个简单的'refresh'监听器,但设法通过组合RequestHandler和UriFragmentChangedListener来获取行为。
ui.getPage().addUriFragmentChangedListener(new Page.UriFragmentChangedListener() {
@Override
public void uriFragmentChanged(final Page.UriFragmentChangedEvent event) {
// ...proceed with application setup
}
});
ui.getSession().addRequestHandler(new RequestHandler() {
@Override
public boolean handleRequest(VaadinSession session, VaadinRequest request, VaadinResponse response) {
if (containsAuthInfo(request)) {
final String redirect = "<html><body></body><script>window.location=\""
+ APP_URL + "#" + UUID.randomUUID() + "\";</script></body></html>";
response.getOutputStream().write(redirect.getBytes());
return true;
}
return false;
}
});