ENUM 验证 spring 表达式语言

Posted

技术标签:

【中文标题】ENUM 验证 spring 表达式语言【英文标题】:ENUM validation spring expression language 【发布时间】:2015-06-14 08:32:33 【问题描述】:

我正在尝试验证一个内部映射到 ENUM businessType 内部服务的 json 字段。我无法在 SpEL 中编写逻辑来断言 business_type json 字段是 businessType 枚举之一

我尝试使用instanceof,但它只验证输入是否是 BusinessDetails 类的“实例”,而不是验证它是否是 BusinessDetails.BusinessType 中的枚举之一

<property name="isValid" value="(#element.businessType instanceof (com.paypal.platform.ops.model.BusinessDetails$BusinessType))" />

请建议我如何验证输入是否为定义的 ENUM 类型之一。 感谢您的意见!

【问题讨论】:

你能提供一些你的枚举和json对象的示例代码吗? 【参考方案1】:

您可以使用Collection Selection根据您的#element.businessType过滤BusinessType.values()的列表:

T(com.paypal.platform.ops.model.BusinessDetails$BusinessType).values().?[name()==#element.businessType].length==1

如果过滤后的数组不为空,那么您的#element.businessType 必须有效,否则数组将为空。

【讨论】:

以上是关于ENUM 验证 spring 表达式语言的主要内容,如果未能解决你的问题,请参考以下文章

Rust语言教程 - if let表达式与枚举进阶

Rust语言教程 - if let表达式与枚举进阶

Rust语言教程 - if let表达式与枚举进阶

通过Enum 表达式取值

Spring-表达式语言

Spring学习(十三)-----Spring 表达式语言(Spring EL)