我想將一個物件作為路徑變數,但在測驗時出現以下例外。我怎樣才能解決這個問題
@Validated
@RestController
@RequestMapping("/test/api")
public class MyRestController {
@GetMapping("/data/{id}")
public Data getData(@PathVariable @Valid IdData id) {
return new Data();
}
}
@Data
public class IdData {
private Integer id;
public IdData(Integer id) {
this.id = id;
}
}
例外:
org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException:無法將“java.lang.String”型別的值轉換為所需的“com.test.IdData”型別;嵌套例外是 java.lang.IllegalStateException:無法將型別“java.lang.String”的值轉換為所需型別“com.test.IdData”:找不到匹配的編輯器或轉換策略
uj5u.com熱心網友回復:
從“/data/{id}”你會得到一個整數id,但是方法引數試圖獲取不兼容的IdData值。
@Validated
@RestController
@RequestMapping("/test/api")
public class MyRestController {
@GetMapping("/data/{id}")
public Data getData(@Valid @PathVariable int id) {
return new Data();
}
}
輸出:-
{
"repository": {
"metricName": "spring.data.repository.invocations",
"autotime": {
"enabled": true,
"percentilesHistogram": false,
"percentiles": null
}
}
}
uj5u.com熱心網友回復:
您可以將 @PathVariable 資料型別從 IdData 更改為整數。只需添加一些邏輯以通過路徑中的 id 獲取 IdData,這可以通過使用 JPA 的 findById() 方法來完成。在路徑中傳遞整數而不是整個物件也可能更容易。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/409038.html
標籤:
上一篇:SpringBoot:使用WebSecurityConfigurerAdapter從2.5.7遷移到2.6.2后出現IllegalStateException
