Spring Rest:在RequestParam中传递对象



我想通过@RequestParam传递请求中的对象列表,但它不起作用。
如果我这样做:

public List<Affaire> getAllAffaires(
@RequestParam(value = "consultantId", required = false) Long consultantId,
@RequestParam(value = "filtres", required = false) List<FilterDTO> filtres)

它没有进入方法,我得到一个500错误。
如果我这样做:

public List<Affaire> getAllAffaires(
@RequestParam(value = "consultantId", required = false) Long consultantId,
List<FilterDTO> filtres)

我得到了一个:

Unable to evaluate the expression Method threw 'java.lang.IllegalArgumentException' exception.

如果我传递另一个包含列表的对象:

public List<Affaire> getAllAffaires(
@RequestParam(value = "consultantId", required = false) Long consultantId,
FilterDTOList filtres)

我进入方法,但FilterDTOList的属性listfilter总是为空。

在Front Side (AngularJS)中,调用是:
function Affaire ($resource, DateUtils) {
var resourceUrl =  'api/affaires/:id';
return $resource(resourceUrl, {}, {
'query': { method: 'GET', isArray: true,
params:{
consultantId:'@consultantId',
filtres:'@filtres'
},

我如何传递我的列表作为我的请求的参数?

尝试使用array而不是List,然后将该数组转换为List

@PostMapping(value = "/updateAllAffaires")
@ResponseBody
public List<FilterDTO> getSelectedGenes(@RequestParam(value = "consultantId", required = false) Long consultantId,
@RequestBody FilterDTO[] filtersDto) {
List<FilterDTO> filters = new ArrayList<>();
// here you can use the logic to convert array to list
return filters;
}

尝试使用@ModelAttribute或@Requestbody代替@RequestParam。

public List<Affaire> getAllAffaires(
@RequestParam(value = "consultantId", required = false) Long consultantId,
@ModelAttribute(value = "filtres", required = false) List<FilterDTO> filtres)

你可以阅读这个答案以更好地理解。这也会有帮助。

最新更新