我在打电话
getUI().getNavigator().navigateTo("myview/param=myparam");
然后导航器打开注册为“ myview”的视图,其中参数
可以通过调用ViewChangeEvent获得
event.getParameters()
返回“ param = myparam”。我的浏览器显示网址
myapp/#!myview/param=myparam
但是,如果我重新加载页面(例如使用F5)
getUI().getNavigator().navigateTo("!myview/param=myparam");
(请注意额外的感叹号),然后将网址更改为
myapp/#!myview//param=myparam
(请注意不应以双斜杠作为注释),这显然是一个问题,实际上每个
页面重新加载会添加另一个斜杠。我在这里做错了什么,还是可以解决?我正在使用可能感兴趣的CDIViewProvider。
注意:这里似乎有人遇到类似问题
Vaadin 7 url navigation hashbang
但这不能回答我的问题。
最佳答案
我没有意识到按F5键时会重新加载UI。有一个像
String uriFragment = getPage().getUriFragment();
getUI().getNavigator().navigateTo(uriFragment);
在我的UI类的初始化代码中。显然,感叹号包含在getUriFragment()的返回中,即它返回“!myview / param = myparam”。我通过在这一点上简单地删除感叹号来解决此问题。