Vaadin combobox getValue()没有得到我想要的东西

时间:2015-04-23 15:34:08

标签: java mysql eclipse combobox vaadin

所以我试图从保存汽车寄存器编号的组合框中获取所选值。这样用户可以选择AAA-111,BBB-222等。

现在我希望能够掌握用户在组合框中选择的值,但我似乎找不到以“AAA-111”形式获取它的方法。当我使用getValue()时,Vaadin想把它作为“entiteetit.Korjaustiedot@4024af35”。我没有用它。

我希望能够对它进行编码,就像它一样:好的,选择“AAA-111”,现在只需按一下按钮就可以在屏幕上获得AAA-111的信息。有关如何从组合框中获取价值的任何想法吗?

var distinctIds = AllFields
    .AsEnumerable()
    .Select(s => new {id = s.Field<string>(ColumnName),})
    .Distinct()
    .Where(f =>
        f.id != null &&
        f.id.Contains(TxtStringSearchInput.Text))
    .ToList();

2 个答案:

答案 0 :(得分:1)

以与您相同的方式创建组合框时,您可以执行以下操作:

  1. 创建项目集合 - 汽车 - 将包含在您的组合框中 - BeanItemContainer<Korjaustiedot>(Korjaustiedot.class, korjaukset)。请注意,它不是将显示的字符串集合,但它们是真实的模型对象,例如用户,汽车,帐户等。
  2. 你说组合框中的项目将如何在组合框中表示。而不是整个对象,只有字符串表示。有几个选项可供选择,但在您的情况下,您说每个项目的“registernumber”字段将用作项目字符串表示。您可以通过select.setItemCaptionPropertyId("registernumber")
  3. 来完成
  4. 如果您通过getProperty().getValue()访问所选项目,则不会返回客户可以看到的所选项目的字符串表示形式。您将返回整个Car对象。因此,如果您在其上调用toString(),则会得到"entiteetit.Korjaustiedot@4024af35",因为它是复合对象而不是字符串。如果您想要注册号,您可以将其作为一个字段从您获得的对象中获取Property().getValue()
  5. 可以在Book of Vaadin中找到容器和项目集合的精美描述 - Collecting Items in Containers

答案 1 :(得分:0)

你可以使用Vojtech Ruzicka的答案,也可以将getValue方法强制转换为你的类,它应该可以工作。

select.addValueChangeListener(event->{
this.addComponent(new Label("Selected " + (Korjaustiedot)this.getValue()))})

您不需要事件来执行此操作,您只需要覆盖类的toString方法。