Vaadin 7:识别"浏览器后退按钮点击"通过ViewChangedEvent?

时间:2018-02-01 12:11:08

标签: java events vaadin

问题或多或少是标题所说的:我有一个实现View接口的CustomView类(因此,输入函数,它接受一个ViewChangeEvent参数)。

我试图确定用户点击浏览器触发视图更改的时间"返回"按钮(作为用户单击链接以在应用程序上输入该视图的opossite),但我无法获取此信息(如果可能)获取此信息。

我是否正在研究正确的组件?我应该看看别的吗?有没有办法找到这个?

编辑:嗯,也许我可以在每次调用ViewChange中添加一个自定义参数,这样我就可以"标记" "普通点击"并确定"返回/前进"由于没有它,但它似乎是一个肮脏,丑陋的把戏......

1 个答案:

答案 0 :(得分:0)

好的,这将有点故事,所以:

我找到了一种识别"用户按下后退按钮的方法"在Vaadin上,因为框架似乎通过Page.updateLocation(String location,boolean fireEvents)函数来管理位置更改。但是,我无法修改位置参数(这可能是由于Vaadin自己的架构或我自己的应用程序细节),所以我最终使用了函数&# 34; changeVariables"在UI类(在继承的,自己的UI类上)发送新的ViewChangedEvent。

感觉有点像黑客,但正如我所说,我还没有能够做得更好。

进入我的问题的具体细节,如果有人发现它有用,我需要以某种方式识别用户是"回来"从不同的角度来看" back"浏览器按钮或"退格"因此,我决定在params上使用一个标志来表明该视图是可以重复的。"这个标志有两个值:" retornable" (如在"我刚进入视图")和"返回" (就像在"我刚刚回到了一个可以反思的观点")。对于那些只会查看代码的人来说,这就是网址显示的内容:

#!viewName/retflag=retornable&otherStuff=maybe
#!viewName/retflag=returning&otherStuff=perhaps

正如我所说,我的进入点"位于" OurCustomUI"它扩展了UI,并具有这个小功能:

@Override
public void changeVariables(Object source, Map<String, Object> variables) {
    super.changeVariables(source, variables);       
}

这里的想法是获得&#34;位置&#34;变量来自,呵呵,变量Map并更新它。它会是这样的: myServer.myCompany.com/myApp/#viewName/retflag=retornable

所以代码会找到&#34; retflag&#34;值,将其更改为&#34;返回&#34;,创建ViewChangedEvent并将其触发。我需要在开头保持super.changeVariables()调用,因为原因,但它似乎工作得很好。