Vaadin21/Fusion-ts枚举模块是从Java枚举生成的,它将所有骆驼大小写值都更改为大写



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

<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',
}

所有值都更改为大写,这就是为什么绑定器无法与具有驼色大小写的绑定器匹配,从而导致字段为空值。

这是可以配置的,是设计的,还是一个bug?

谢谢&BRDaniel

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

这里的原因是TypeScript枚举的功能远不如Java。例如,将字符串作为枚举元素值发送;但如果它是一个物体呢?TS枚举无法反映该更改,因此Fusion生成器也无法执行此操作。

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

最新更新