我正在打电话
getUI().getNavigator().navigateTo("myview/param=myparam");
导航器将打开注册为“myview”的 View ,其中参数 可以通过调用从ViewChangeEvent获取
event.getParameters()
返回“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);
在我的 UI 类的初始化代码中。显然,感叹号包含在 getUriFragment() 的返回中,即它返回“!myview/param=myparam”。我通过简单地去掉此时的感叹号来解决这个问题。
关于java - 使用 url 片段中的参数重新加载页面会在 vaadin 中添加额外的斜杠字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33588929/