You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy多用户选择字段值重复检测报错实现求助

多用户选择字段重复值检测解决方案

针对多用户选择字段的重复检测,核心是利用集合的交集判断——只要两个用户集合存在共同元素,就说明有重复用户。以下是修正后的完整脚本:

// 获取两个多用户选择字段
def multiFieldA = getFieldByName('Multi User Picker A')
def multiFieldB = getFieldByName('Multi User Picker B')
def currentField = getFieldById(fieldChanged)

// 先清空两个字段的错误提示
multiFieldA.clearError()
multiFieldB.clearError()

// 获取字段值(多用户字段返回的是User对象的集合,可能为null,转成空集合避免空指针)
def usersA = multiFieldA.value ?: []
def usersB = multiFieldB.value ?: []

// 检查两个集合是否存在交集(即有重复用户)
def duplicateUsers = usersA.intersect(usersB)
if (!duplicateUsers.isEmpty()) {
    // 提取重复用户名拼接成提示文本
    def duplicateNames = duplicateUsers.collect { it.displayName }.join(', ')
    currentField.setError("请选择不同的用户。以下用户已重复选择:$duplicateNames")
}

关键说明:

  • 多用户字段的value返回的是List<User>类型(而非单个值),直接用intersect()方法可以快速获取两个集合的交集
  • 用?: []处理空值,避免字段未选择时出现空指针异常
  • 通过collect { it.displayName }把重复的User对象转换成用户名,让错误提示更直观

你之前代码的问题:

  • 错误地直接用contains判断集合是否包含另一个集合,正确的做法是判断集合是否存在共同元素
  • 遍历逻辑有误,应该检查单个用户是否存在于另一个集合,或者直接用交集方法更高效

内容的提问来源于stack exchange,提问作者Артем Балашов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:24:24