我在打电话

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”。我通过在这一点上简单地删除感叹号来解决此问题。

07-24 19:08
查看更多