我花了几天的时间来尝试找出如何以编程方式将值保存或更新到CustomField中,并最终了解它是如何完成的。因此,我将提出这个问题,然后像回答问题一样回答它。

关于如何在JIRA中保存或更新“自定义字段”的值的文档相互矛盾。我正在使用:

customField.setCustomFieldValue(CustomField, value);

这不会将值保存到数据库中,但据我所知确实会更新值。例如,仅当在工作流后功能转换中进一步使用CustomField时才有用。

我正在使用Jira 4.3.2。

如何将CustomFields值保存到JIRA数据库中?

最佳答案

好的,这就是我成功更新CustomField值并将其保存到JIRA数据库中的方式。

欢迎评论...

private void saveValue(MutableIssue issue, String valueToSave, CustomField
        customField) throws FieldLayoutStorageException {

    issue.setCustomFieldValue(customField, valueToSave);

    Map<String, ModifiedValue> modifiedFields = issue.getModifiedFields();

    FieldLayoutItem fieldLayoutItem =
    ComponentManager.getInstance().getFieldLayoutManager().getFieldLayout(issue).getFieldLayoutItem(
            customField);

    DefaultIssueChangeHolder issueChangeHolder = new DefaultIssueChangeHolder();

    final ModifiedValue modifiedValue = (ModifiedValue) modifiedFields.get(customField.getId());

    customField.updateValue(fieldLayoutItem, issue, modifiedValue, issueChangeHolder);
}

08-26 23:40