当我选择一个表格条目(右侧)时,我正在编写一个导航到左侧显示的表格条目页面的视图。这类似于Vaadin网站上的地址簿教程,只有我使用了Navigator和视图。
当我使用导航工作时(单击id为#12的条目导航到localhost:8080 / test / 12)并且视图中的测试标签输入()变为匹配id,testTable .getItem(event.getParameters())由于某种原因返回null,因此我无法访问该条目。
视图的ValueChangeListener和enter()如下所示。
class ValueChangeListener implements Property.ValueChangeListener {
Object testId;
@Override
public void valueChange(ValueChangeEvent event) {
// Navigate to a chosen table entry
this.testId = event.getProperty().getValue();
navigator.navigateTo("test/" + testId);
}
}
...
public void enter(ViewChangeEvent event) {
Object tmp = event.getParameters();
testName.setValue((String) tmp); // is set to the id
System.out.println(testTable.getItem(tmp) == null); // DEBUG: always returns true
}
答案 0 :(得分:0)
我认为你应该改变这个:
System.out.println(testTable.getItem(tmp) == null);
到此:
String str = (String) tmp;
if (str != null && !str.isEmpty()) {
System.out.println(testTable.getItem(Integer.parseInt(str)) == null);
}
答案 1 :(得分:0)
我认为你管理导航器的方式有问题。 首先,当您使用Navigator更改视图时,您应该添加适当的" URL片段"与"#"。 例如,Vaadin采样器使用: http://demo.vaadin.com/sampler/#foundation
如果您的网址中没有"#" ViewChangeEvent.getParameters()为您提供 null 或 isEmpty()。