Jira 6.1.6 Java REST API - 无法设置自定义下拉列表值

int*_*000 0 java api rest jira jira-rest-java-api


我正在使用JRJC jira-rest-java-client-2.0.0-m2.
我的目标是能够从问题中复制自定义字段并使用该值创建新问题.这通常很好:

Field trigger = issue.getFieldByName("Trigger");
if (trigger != null) {
    newIssue.setFieldValue(trigger.getId(), trigger.getValue());
}
Run Code Online (Sandbox Code Playgroud)

(newIssue是IssueInputBuilder类型的对象;类型问题的问题)

但它不适用于下拉列表(单选),这会引发以下异常:

com.atlassian.jira.rest.client.domain.input.CannotTransformValueException: Any of available transformers was able to transform given value. Value is: org.codehaus.jettison.json.JSONObject: {"self":"http:\/\/localhost:8080\/rest\/api\/2\/customFieldOption\/10100","value":"SQL Statement","id":"10100"}
    at com.atlassian.jira.rest.client.domain.input.ValueTransformerManager.apply(ValueTransformerManager.java:83)
    at com.atlassian.jira.rest.client.domain.input.IssueInputBuilder.setFieldValue(IssueInputBuilder.java:135)
    at com.sonydadc.lfiala.jira.CopyUtil.copy(CopyUtil.java:152)
    at com.sonydadc.lfiala.jira.JiraUtil.copyTask(JiraUtil.java:90)
    at com.sonydadc.lfiala.jira.Start.main(Start.java:13)
Run Code Online (Sandbox Code Playgroud)

直接设置值不起作用:

Field trigger = issue.getFieldByName("Trigger");
        if (trigger != null) {
            newIssue.setFieldValue(trigger.getId(), trigger);
        }
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,会抛出此异常:

com.atlassian.jira.rest.client.RestClientException: Could not find valid 'id' or 'value' in the Parent Option object.
    at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:165)
    at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:159)
    at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:48)
    at com.atlassian.httpclient.api.ResponsePromiseMapFunction.apply(ResponsePromiseMapFunction.java:12)
    at com.atlassian.util.concurrent.Promises$Of$3.apply(Promises.java:285)
    at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:162)
    at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)
...
Run Code Online (Sandbox Code Playgroud)

当jira-client尝试将值设置为issueinputbuilder时,会抛出这些异常.
我该如何解决这个问题?

感谢Laurenz先生

编辑我尝试了相同的最新m25版本的jira-rest-java-client-api和jira-rest-java-client-core,它也没有用

仅供我用谷歌搜索过.很多.我找不到任何可以解决我的问题的东西(至少在前几页没有:/)

int*_*000 5

好的,我自己解决了:)

如果有人想知道如何:

IssueField trigger = issue.getFieldByName("Trigger");
        if (trigger != null) {
            JSONObject triggerJO = (JSONObject) trigger.getValue();
            newIssue.setFieldValue(trigger.getId(), ComplexIssueInputFieldValue.with("value", triggerJO.get("value")));
        }
Run Code Online (Sandbox Code Playgroud)

这与新的api版本m25(jira-rest-java-client-api和jira-rest-java-client-core)一起运行.