如何以编程方式将值保存到JIRA中的自定义字段?

eno*_*ace 13 java jira jira-plugin atlassian-plugin-sdk

我花了几天时间试图找出如何以编程方式将值保存或更新到CustomField中,并最终了解它是如何完成的.所以我会把它作为一个问题,然后回答它,因为我很想有这个问题和答案.

关于如何在JIRA中保存或更新自定义字段的值的文档存在冲突.我用的是:

customField.setCustomFieldValue(CustomField, value);
Run Code Online (Sandbox Code Playgroud)

这不会将值保存到数据库中,但它确实更新了值,据我所知.例如,如果您在工作流后期函数转换中进一步使用CustomField,它将非常有用.

我正在使用Jira 4.3.2.

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

eno*_*ace 17

好的,这就是我成功更新并将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);
}
Run Code Online (Sandbox Code Playgroud)