依赖NativeSelect?

时间:2016-04-28 09:01:02

标签: vaadin

我正在使用双下拉列表(NativeSelect)构建表单,第二个NativeSelect依赖于第一个NativeSelect。就像选择一个州时一样,' ZIP'显示其包含的邮政编码。

我搜索但找不到这样的例子。这是我的屏幕,它不起作用。当用户选择第一个NativeSelect时,第二个NativeSelect似乎发生了变化,但我无法下拉第二个NativeSelect

enter image description here

这是初始状态。

enter image description here

当用户选择' company1'来自'公司'下拉

enter image description here

'条目'选择已更改

但是我不能放下它。

这是我的代码:

public SampleForm(Supplier<List<Company>> companySupplier , EntryDao entryDao) {
    this.companySupplier = companySupplier;
    this.entryDao = entryDao;

    setCompanySupplier(companySupplier);
  }

  public void setCompanySupplier(Supplier<List<Company>> companySupplier ) {
    this.companySupplier = companySupplier;
    companySupplier.get().forEach(company -> {
      companySelect.addItem(company);
      companySelect.setItemCaption(company, "[" + company.getId() + "] " + company.getName());
    });
    companySelect.setNullSelectionAllowed(false);
    companySelect.setMultiSelect(false);

    companySelect.addValueChangeListener(event -> {
      Company company = (Company) event.getProperty().getValue();
      logger.info("loading entries from company : {} " , company);
      setEntryList(entryDao.findByCompany(company));
    });
  }

  public void setEntryList(List<Entry> entryList) {
    entrySelect.removeAllItems();

    logger.info("entryList size = {}" , entryList.size());
    entryList.forEach(entry -> {
      entrySelect.addItem(entry);
      entrySelect.setItemCaption(entry , entry.toString());
    });

    entrySelect.setImmediate(true);

    entrySelect.setNullSelectionAllowed(false);
    entrySelect.setMultiSelect(false);
    entrySelect.setEnabled(true);
  }

  @Override
  protected Component createContent() {
    return new MVerticalLayout(
      new MFormLayout(companySelect , entrySelect , enabled)
        .withMargin(false) , getToolbar()
    ).withMargin(new MMarginInfo(false , true));
  }

我的算法很简单:当用户点击companySelect时,addValueChangeListener将加载相关条目(属于公司),并设置为entrySelect

但我不知道为什么它不起作用。

我错过了什么吗?谢谢。

0 个答案:

没有答案