我使用Vaadin 7.我想在进入之前更改视图中的属性。当我点击第一个视图中的链接时,它会将我重定向到第二个视图,其中包含URL中的参数,如下所示:
<myDomain>:<myport>/vaadinApp/#!SecondView/?id=myid
现在我做的是以下内容:
SecondView second = new SecondView();
getNavigator().addView(SecondView.NAME, second);
我在变更视图中添加了一个监听器:
getNavigator().addViewChangeListener(new ViewChangeListener() {
private Map<String, String> queryMap;
@Override
public boolean beforeViewChange(ViewChangeEvent event) {
//here I get my parameter (its working)
if (!event.getParameters().equals("")) {
queryMap = getQueryMap(event.getParameters().replace("?", ""));
}
String newViewName = event.getViewName();
if(newViewName.equals(SecondView.NAME)){
System.out.println("In Second VIEW : ");
if (queryMap != null && !queryMap.get("id").equals("")) {
System.out.println("IF FOUND !! => " + queryMap.get("id"));
second.setId(queryMap.get("id"));
System.out.println("SET =>" + second.getId());
}
}
....
现在当我运行我的应用程序时,在控制台中我得到了这个:
IF FOUND !! => activiti$4077
SET =>activiti$4077
ID : null
这意味着我得到了参数,我在View
中更改了它,但是当它显示视图时我得到id = null
,这意味着它实际上没有改变任何东西。我的代码有什么问题吗?救命啊!
答案 0 :(得分:0)
您的参数中很可能出现问号导致问题。尝试删除它(并相应地更新参数处理)/vaadinApp/#!SecondView/?id=myid
- &gt; /vaadinApp/#!SecondView/id=myid
。
?
与查询字符串参数一起使用,但在这种情况下参数只是URI片段的一部分。