0

我在尝试将组合框绑定到我的模型时遇到了这个问题。枚举值在后端提交到我的端点类时为空。

<vaadin-combo-box label="identifier type" id="identifier_type"
    ${field(this.binder.model.entity.identification.idType)}
    .items="${Object.values(KeyType)}">
</vaadin-combo-box>

Java 枚举如下所示:

public enum KeyType {
  CUSTOM("Custom"),
  IRDI("IRDI"),
  IRI("IRI"),
  IDSHORT("IdShort"),
  FRAGMENTID("FragmentId");
  ...
}

但是生成的 ts 枚举看起来像这样:

enum KeyType {
  CUSTOM = 'CUSTOM',
  IRDI = 'IRDI',
  IRI = 'IRI',
  IDSHORT = 'IDSHORT',
  FRAGMENTID = 'FRAGMENTID',
}

所有值都更改为大写,这就是绑定器无法匹配具有驼峰写法的绑定器的原因,从而导致该字段为空值。

这可以配置,这是设计使然,还是这是一个错误?

谢谢&BR丹尼尔

4

1 回答 1

1

它不像值被更改为大写。Fusion 生成器只使用枚举元素名称作为键和值,而忽略括号中的任何数据。这是设计使然,目前还没有计划改变这种行为。

这里的原因是 TypeScript 枚举不如 Java 强大。例如,您将字符串作为枚举元素值发送;但是如果它是一个对象呢?TS 枚举无法反映这种变化,因此 Fusion 生成器也无法做到这一点。

虽然没有改变内置行为的计划,但未来 Fusion 生成器将更加灵活,因此您将能够对其进行调整以支持您的情况。

于 2021-11-05T11:03:18.350 回答