Vaadin表如何与Navigator一起使用?

时间:2014-11-04 08:07:57

标签: vaadin vaadin7

当我选择一个表格条目(右侧)时,我正在编写一个导航到左侧显示的表格条目页面的视图。这类似于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
    }

2 个答案:

答案 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()