get(`/video_list`, {param: {page: this.page}}).后端接受请求@RequestMapping(value = "/video_list", method = RequestMethod.GET) public R videoList(@RequestParam(name = "param") Map<String, Object> param报ERROR Failed to convert value of type 'java.lang.String' to required type 'java.util.Map';解决案例
时间: 2024-03-01 07:55:49 浏览: 52
这个错误是因为前端传递的参数是字符串类型,而后端接口需要的是Map类型。可以尝试在前端传递参数时将其转化为JSON对象,然后在后端接口中使用@RequestBody注解将其转化为Map类型。具体解决方案如下:
1. 前端代码:
```
const params = {
page: this.page
};
axios.get('/video_list', { params: { param: JSON.stringify(params) } }).then(res => {
// 处理返回结果
}).catch(err => {
// 处理错误
});
```
2. 后端代码:
```
@RequestMapping(value = "/video_list", method = RequestMethod.GET)
public R videoList(@RequestParam(name = "param") String param) {
Map<String, Object> paramMap = JSON.parseObject(param, new TypeReference<Map<String, Object>>() {});
// 处理参数
}
```
这样就可以解决这个错误了。
相关问题
get(/video_list?param=+ JSON.stringify({page: this.page}))后端接受请求@RequestMapping(value = "/video_list", method = RequestMethod.GET) public R videoList(@RequestParam(name = "param") Map<String, Object> param报ERROR Failed to convert value of type 'java.lang.String' to required type 'java.util.Map';解决案例
可以尝试如下解决方案:
1. 在前端代码中,将请求参数使用encodeURIComponent()方法进行编码,以避免参数中包含特殊字符造成的问题。例如:
```
let param = encodeURIComponent(JSON.stringify({page: this.page}));
axios.get('/video_list?param=' + param).then(response => {
// 处理响应数据
}).catch(error => {
// 处理错误
});
```
2. 在后端代码中,使用@RequestBody注解接收JSON格式的请求参数,并使用Jackson库将JSON格式的参数转换为Map类型。例如:
```
@RequestMapping(value = "/video_list", method = RequestMethod.GET)
public R videoList(@RequestBody String param) throws IOException {
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> paramMap = mapper.readValue(param, new TypeReference<Map<String, Object>>() {});
// 处理请求参数
}
```
这样就可以避免将字符串类型的请求参数转换为Map类型时出现的错误了。
get请求/video_list?param=${page:page}报错
这个错误可能是因为你使用了类似`${page:page}`的语法,但是你的后端服务不支持这个语法。`${page:page}`是一种模板语法,它表示在请求时将`page`参数的值插入到请求的URL中。你需要检查你的后端服务是否支持这种语法,如果不支持,你可以考虑使用普通的URL参数传递方式,例如`/video_list?page=1`。