Java Jira API报错‘Option id 'null' is not valid’求解
Java Jira API创建Bug时自定义单选字段报错:Option id 'null' is not valid
我已经查遍了相关报错的案例,别人的问题都是字段名或字段值错误,但我试了所有可能的组合还是解决不了。
我用Java Jira API创建新Bug,公司有个自定义字段**"Detected by Test Type"**(字段ID:customfield_15870),可选值为"Integration Testing"、"Functional Testing"、"Performance Testing"。我从现有Bug里获取到该字段的"Performance Testing"值信息如下:
- value: "Performance Testing"
- id: "12345"
- self: "https:///rest/api/2/customFieldOption/12345"
- disabled: false
这说明字段名和值都是正确的,但我尝试了以下几种写法,都抛出Option id 'null' is not valid错误。
尝试过的代码写法
写法1:构建完整HashMap
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));
写法2:仅传入value
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "Performance Testing"));
写法3:错误地用id参数传value值
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "Performance Testing"));
写法4:错误地用value参数传id字符串
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("value", "12345"));
写法5:仅传入id
iib.setFieldValue("customfield_15870", ComplexIssueInputFieldValue.with("id", "12345"));
堆栈跟踪信息
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)
求各位帮忙解决这个问题,提前感谢!
内容的提问来源于stack exchange,提问作者Suave Devil
相关产品推荐
相关产品推荐

