首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用@PreserveOnRefresh (Vaadin 7),我可以为UIDL请求中的每个"reinit“调用一个侦听器吗?

使用@PreserveOnRefresh (Vaadin 7),我可以为UIDL请求中的每个"reinit“调用一个侦听器吗?
EN

Stack Overflow用户
提问于 2013-10-24 22:19:27
回答 2查看 1.3K关注 0票数 1

当用户返回到他们的会话时,我让侦听器检查一些get参数(表示身份验证)。问题是我不能从那个点(我相信)重新初始化UI逻辑,因为它不在UIDL事务中。无论如何,我的UI在第一次调用UI.getCurrent()时就会抛出NPE。

如何在每次页面刷新中获得安全钩子?

EN

回答 2

Stack Overflow用户

发布于 2014-08-07 00:56:17

Vaadin7.2在UI中引入了一个名为refresh(VaadinRequest)的方法,当UI具有@PreserveOnRefresh注释时,浏览器刷新后会调用该方法。

票数 2
EN

Stack Overflow用户

发布于 2013-10-24 22:54:17

我找不到一个简单的“刷新”监听器,但通过组合一个RequestHandler和一个UriFragmentChangedListener,我设法获得了这种行为。

代码语言:javascript
复制
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;
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19568554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档