无法解决“Option id 'null' is not valid”错误 - Java Jira API

问题描述 投票:0回答:1

我已经广泛浏览了这个错误,人们要么说字段名称错误,要么字段值错误,但我尝试了所有可能的组合都无济于事。

我正在使用 JIRA 的 Java API 创建一个新错误,我的公司有一个名为“按测试类型检测”的字段 (customfield_15870)。可接受的值为“集成测试”、“功能测试”和“性能测试”。每个看起来都像这样(我从现有的错误中对此字段进行了 getField 并获得了单独的值)

值:“性能测试” 编号:“12345” 自我:“https:///rest/api/2/customFieldOption/12345” 禁用:假

这告诉我字段名称正确,各个值也正确。

这是我的代码:

Map<String, Object> cascadingValues = new HashMap<String, Object>();
cascadingvalues.put("value",  "Performance Testing");
cascadingvalues.put("id",  "12345");
cascadingvalues.put("disabled",  false);
cascadingvalues.put("self",  "https://<url>/rest/api/2/customFieldOption/12345");

iib.setFieldValue("customfield_15870", new ComplexIssueInputFieldValue(cascadingValues));


我也尝试过这些选项:

    iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "Performance Testing"));
    iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "Performance Testing"));
    iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "12345"));
   
    iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "12345"));

然而,它向我抛出“选项 id 'null' 无效”错误。有人可以帮忙吗?

这是堆栈跟踪:

RestClientException{statusCode=Optional.of(400), errorCollections=[ErrorCollection{status=400, errors={customfield_15870=Option id 'null' is not valid}, errorMessages=[]}]}
       at com.atlassian.jira.rest.client.internal.async.DelegatingPromise.claim(DelegatingPromise.java:47)
       at com.bla.jira.IssueWriterBeta.createIssue(IssueWriterBeta.java:340)
       at com.bla.almutil.ConnectToJira.createEpic(ConnectToJira.java:282)
       at com.bla.almutil.ConnectToJira.main(ConnectToJira.java:378)
Caused by: RestClientException{statusCode=Optional.of(400), errorCollections=[ErrorCollection{status=400, errors={customfield_15870=Option id 'null' is not valid}, errorMessages=[]}]}
       at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:173)
       at com.atlassian.jira.rest.client.internal.async.AbstractAsynchronousRestClient$2.apply(AbstractAsynchronousRestClient.java:167)
       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:295)
       at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:185)
       at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)
       at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:253)
       at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:161)
       at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:146)
       at com.google.common.util.concurrent.AbstractFuture.done(AbstractFuture.java:235)
       at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:172)
       at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
       at com.atlassian.util.concurrent.Promises$Of$3.apply(Promises.java:295)
       at com.atlassian.util.concurrent.Promises$2.onSuccess(Promises.java:185)
       at com.google.common.util.concurrent.Futures$7.run(Futures.java:1072)
       at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:253)
       at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:161)
       at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:146)
       at com.google.common.util.concurrent.AbstractFuture.done(AbstractFuture.java:235)
       at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:172)
       at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:53)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$1$1.run(SettableFuturePromiseHttpPromiseAsyncClient.java:46)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$ThreadLocalDelegateRunnable$1.run(SettableFuturePromiseHttpPromiseAsyncClient.java:197)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient.runInContext(SettableFuturePromiseHttpPromiseAsyncClient.java:90)
       at com.atlassian.httpclient.apache.httpcomponents.SettableFuturePromiseHttpPromiseAsyncClient$ThreadLocalDelegateRunnable.run(SettableFuturePromiseHttpPromiseAsyncClient.java:192)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)

提前谢谢您!

java runtime-error jira
1个回答
0
投票

解决了这个问题,我无意中在不同的地方使用了相同的自定义字段 id 覆盖了这些值。然而,由于在其他地方找不到 Java API 解决方案,我无论如何都会发布此错误的代码:

Map<String, Object> cascadingValues = new HashMap<String, Object>();
cascadingvalues.put("value",  "Performance Testing");
cascadingvalues.put("id",  "12345");
iib.setFieldValue("customfield_15870", new ComplexIssueInputFieldValue(cascadingValues));

仅像其他选择字段一样设置值并不能满足这种自定义字段的需要。

© www.soinside.com 2019 - 2024. All rights reserved.