当用户返回到他们的会话时,我让侦听器检查一些get参数(表示身份验证)。问题是我不能从那个点(我相信)重新初始化UI逻辑,因为它不在UIDL事务中。无论如何,我的UI在第一次调用UI.getCurrent()时就会抛出NPE。
如何在每次页面刷新中获得安全钩子?
发布于 2014-08-07 00:56:17
Vaadin7.2在UI中引入了一个名为refresh(VaadinRequest)的方法,当UI具有@PreserveOnRefresh注释时,浏览器刷新后会调用该方法。
发布于 2013-10-24 22:54:17
我找不到一个简单的“刷新”监听器,但通过组合一个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;
}
});https://stackoverflow.com/questions/19568554
复制相似问题