【发布时间】:2021-10-29 15:23:47
【问题描述】:
我从 Spring Boot @RestController 中的 React 中制作的数据表插件接收到一些过滤器。该插件以这种方式发送过滤器: 过滤[0][id] = "tableColumnName" 过滤[0][值] = "tableColumnValue"
我收到了一些关于 DTO 的其他分页和相关信息,如下所示:
@GetMapping("/search")
public ResponseEntity<DashboardDTO> search(SearchDTO searchDTO){
}
我的 SearchDTO 是这样的:
public class SearchDTO{
public int pageNumber;
public int pageSize;
public int total;
public int pages;
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
public List<Long> ids;
public List<FilterDTO> filters;
}
如果我尝试添加,例如一个FilterDTO的List,其中FilterDTO如下:
public class SearchFilters {
public int id;
public String value;
}
然后我收到以下错误:
property referenced in indexed property path is neither an array nor a list nor a map
请求如下:
endpoint/search?pageSize=5&pageNumber=0&filtered[0][id]=columnName1&filtered[0][value]=value1&filtered[1][id]=columnName2&filtered[1][value]=value2
如何在控制器中接收此类参数?
【问题讨论】:
-
你能添加一个带有过滤参数的示例网址吗?
-
您能否添加
FilterDTO的代码以及对应于“如果我尝试添加,例如,FilterDTO (...) 的列表”的代码?谢谢! -
感谢您的 cmets,刚刚使用 FilterDTO 和示例 url 编辑了帖子。我认为问题在于解析器无法将 id 识别为“filtered[0][id]”中的属性,但如果它被过滤[0].id 它将起作用。
标签: java spring-boot filter query-parameters