Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用@PreserveOnRefresh(Vaadin 7),我可以为每个";“雷尼特”;在UIDL请求中?_Vaadin_Vaadin7 - Fatal编程技术网

使用@PreserveOnRefresh(Vaadin 7),我可以为每个";“雷尼特”;在UIDL请求中?

使用@PreserveOnRefresh(Vaadin 7),我可以为每个";“雷尼特”;在UIDL请求中?,vaadin,vaadin7,Vaadin,Vaadin7,当用户返回到他们的会话时,我有一个侦听器检查一些get参数(表示身份验证)。问题是我不能从那一点重新初始化UI逻辑(我相信),因为它不在UIDL事务中。无论如何,我的UI在第一次调用UI.getCurrent()时就会抛出NPE 如何在每个页面刷新中获得一个安全的钩子?我找不到一个简单的“刷新”侦听器,但通过组合RequestHandler和UriFragmentChangedListener,成功地获得了该行为 ui.getPage().addUriFragmentChangedListene

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


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

我找不到一个简单的“刷新”侦听器,但通过组合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;
    }
});
ui.getPage().addUriFragmentChangedListener(新页面.UriFragmentChangedListener(){
@凌驾
公共无效uriFragmentChanged(最终页面。UriFragmentChangedEvent事件){
//…继续进行应用程序设置
}
});
ui.getSession().addRequestHandler(新的RequestHandler()){
@凌驾
公共布尔handleRequest(VaadinSession会话、VaadinRequest请求、VaadinResponse响应){
如果(包含Sauthinfo(请求)){
最终字符串redirect=“window.location=\”“
+应用程序URL+“\”+UUID.randomUUID()+“\”;”;
response.getOutputStream().write(redirect.getBytes());
返回true;
}
返回false;
}
});

Vaadin 7.2在
UI
中引入了一个名为
refresh(VaadinRequest)
的方法,当
UI
具有
@preserveonfresh
注释时,在浏览器刷新后调用该方法