根据更新中的其他字段清除选择的“自定义”字段

时间:2019-01-14 18:15:17

标签: groovy jira

我有以下字段:

系统, CMS, 水瓶座,

我想根据系统选择清除Aquarius字段。例如,一个用户。最初,用户创建了一个问题,并为系统选择了CMS,并在CMS字段中填写了一个值“ abcde”。

现在,用户想更新问题。现在,他们选择Aquarius,然后使用值“ jklm”填写Aquarius字段。发生这种情况时,我想清除CMS字段中存储的值,因此该字段不会显示在“查看屏幕”上。

请注意:这些是单选字段。

下面是我的代码:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.MutableIssue

Issue issue = event.issue

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def customField2 = customFieldManager.getCustomFieldObjectByName("System")
LazyLoadedOption systemOption = (LazyLoadedOption) issue.getCustomFieldValue(customField2)


def changeHolder = new DefaultIssueChangeHolder();
def customField4 = customFieldManager.getCustomFieldObjects(issue).find {it.name == "Aquarius Category"}


if (systemOption?.getValue() == "CMS2") {
 customField4.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(customField4), ""),changeHolder)
}

不幸的是它失败了 注意:使用自定义侦听器-Scriptrunner

2 个答案:

答案 0 :(得分:0)

您可以使用

issue.setCustomFieldValue(cf,null) issueManager.updateIssue(用户,问题,eventDispatch.Event_Type,布尔值)

答案 1 :(得分:0)

设法使其起作用。这确实是一个小错误。设置自定义字段的值时。导入时不采用我们正在设置的字段类型。例如,在设置文本字段时,我们可以使用:

if (systemOption?.getValue() == "CMS2") {
 customField4.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(customField4), ""),changeHolder)
}

但是在设置选择(下拉)字段类型时,我们应该使用:

if (systemOption?.getValue() == "CMS2") {
 customField4.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(customField4), null),changeHolder)
}

总而言之,为null而不是“”