如何通过Behaviors实现JIRA中级联列表2随级联列表1选项设为必填?
JIRA Behaviors 级联列表必填控制问题解决
你的代码失效的核心原因是:级联字段的value返回的是CascadingOption对象,不是纯字符串,直接用字符串对比会永远返回false,导致无法正确设置必填状态。
修正后的代码
根据你的需求(选择级联列表1的指定父选项时,级联列表2设为必填),调整后的代码如下:
def fieldA = getFieldByName('BI Reporting & Analytics Request Categories') // 级联列表1 def fieldC = getFieldByName('Reporting') // 级联列表2 // 触发必填的级联列表1父选项名称 def triggerOption = 'Reporting' def valueA = fieldA.value def isFieldCRequired = false if (valueA) { // 逻辑:只要父选项是triggerOption,无论是否选择子选项都触发必填 // 如果需要仅当选中父选项本身(未选子选项)时触发,注释下面一行,启用下一行 isFieldCRequired = valueA.parentOption ? valueA.parentOption.value == triggerOption : valueA.value == triggerOption // isFieldCRequired = !valueA.parentOption && valueA.value == triggerOption } fieldC.setRequired(isFieldCRequired)
关键说明
- 级联字段值的类型:
CascadingOption对象包含两个核心属性:value:当前选项的名称parentOption:如果是子选项,返回对应的父CascadingOption对象;如果是父选项,返回null
- 空值判断:增加
if (valueA)避免用户未选择任何选项时出现空指针异常 - 两种判断逻辑:
- 第一种逻辑:只要父选项匹配,不管有没有选子选项都触发必填
- 第二种逻辑:仅当用户只选中父选项(未选择子选项)时才触发必填,根据你的实际需求切换
调试技巧
如果还是有问题,可以在代码中添加日志打印,查看字段值的实际结构:
log.debug("fieldA value: ${valueA}, class: ${valueA.getClass()}") log.debug("parent option: ${valueA?.parentOption?.value}")
在JIRA的日志中查看输出,确认选项名称是否匹配。
内容的提问来源于stack exchange,提问作者Drish
相关产品推荐
相关产品推荐

