1. 程式人生 > 實用技巧 >java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0異常問題

java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0異常問題

今天在一個基於Spring Cloud開發的專案上添加了一個遠端呼叫另外一個微服務的程式介面,在重新啟動程式進行測試時出現如下異常:

Caused by: java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0
    at feign.Util.checkState(Util.java:128)
    at org.springframework.cloud.netflix.feign.annotation.RequestParamParameterProcessor.processArgument
(RequestParamParameterProcessor.java:63) at org.springframework.cloud.netflix.feign.support.SpringMvcContract.processAnnotationsOnParameter(SpringMvcContract.java:238) at feign.Contract$BaseContract.parseAndValidateMetadata(Contract.java:107) at org.springframework.cloud.netflix.feign.support
.SpringMvcContract.parseAndValidateMetadata(SpringMvcContract.java:133) at feign.Contract$BaseContract.parseAndValidatateMetadata(Contract.java:64) at feign.hystrix.HystrixDelegatingContract.parseAndValidatateMetadata(HystrixDelegatingContract.java:34) at feign.ReflectiveFeign$ParseHandlersByName.apply
(ReflectiveFeign.java:146) at feign.ReflectiveFeign.newInstance(ReflectiveFeign.java:53) at feign.hystrix.HystrixFeign$Builder.target(HystrixFeign.java:59) at org.springframework.cloud.netflix.feign.HystrixTargeter.targetWithFallbackFactory(HystrixTargeter.java:78) at org.springframework.cloud.netflix.feign.HystrixTargeter.target(HystrixTargeter.java:53) at org.springframework.cloud.netflix.feign.FeignClientFactoryBean.loadBalance(FeignClientFactoryBean.java:145) at org.springframework.cloud.netflix.feign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:166) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:168) ... 42 common frames omitted

前面還有更長的異常資訊,這裡只是列出了控制檯輸出的最底層的異常資訊,關鍵問題在於提示的異常資訊是

RequestParam.value() was empty on parameter 0

排查了下程式碼發現在新新增的通過Feign呼叫遠端微服務介面的引數中在註解@RequestParam上書寫錯誤

ReturnResultObject updateBatchNumberStatus(@RequestParam List<String> billID_list);

是在註解後面缺少了表示引數名的屬性值,應該寫成如下:

ReturnResultObject updateBatchNumberStatus(@RequestParam("billID_list") List<String> billID_list);

犯了一個小錯誤,這裡記錄一下,防止後面再犯這樣的錯誤。

本文轉載自:https://blog.csdn.net/jxm007love/article/details/80109974