使用 url 片段中的参数重新加载页面会在 vaadin 中添加额外的斜杠字符

reloading page with parameter in url fragment adds extra slash character in vaadin

我正在打电话

getUI().getNavigator().navigateTo("myview/param=myparam");

并且导航器打开注册为 "myview" 的视图,其中参数 可以通过调用

从 ViewChangeEvent 中获取
event.getParameters()

哪个returns"param=myparam"。我的浏览器显示 url

myapp/#!myview/param=myparam

但是,如果我重新加载页面(例如使用 F5)

getUI().getNavigator().navigateTo("!myview/param=myparam");

(注意多余的感叹号)将被调用并且 url 更改为

myapp/#!myview//param=myparam

(注意双斜杠不应该是评论),这显然是一个问题,实际上每个 页面重新加载添加另一个斜杠。我在这里做错了什么或者如何解决这个问题?我正在使用可能感兴趣的 CDIViewProvider。

注意:这里好像有人遇到过类似的问题 Vaadin 7 url navigation hashbang 但这并没有回答我的问题。

我没有意识到按 F5 时会重新加载 UI。有个电话像

String uriFragment = getPage().getUriFragment();
getUI().getNavigator().navigateTo(uriFragment);

在我的UIclass的初始化代码中。显然感叹号包含在 getUriFragment() 的 return 中,即它 returns "!myview/param=myparam"。我此时通过简单地去除感叹号来解决这个问题。