【发布时间】:2021-12-10 23:00:02
【问题描述】:
我想通过@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的属性listFiltre总是为空。
在前端(AngularJS)中,调用是:
function Affaire ($resource, DateUtils) {
var resourceUrl = 'api/affaires/:id';
return $resource(resourceUrl, {}, {
'query': { method: 'GET', isArray: true,
params:{
consultantId:'@consultantId',
filtres:'@filtres'
},
如何将我的列表作为请求的参数传递?
【问题讨论】:
-
用户
@RequestBody FilterDTOList filtres并在请求正文中传递过滤器。 -
您能提供更多信息吗?您如何处理对服务的请求?您使用的是哪个 HTTP 动词?
-
第一个例子中抛出 500 时能否提供堆栈跟踪?看起来没有为 FilterDTO 定义映射。可能,如果您将请求参数注入 List
,然后从 String 映射到 FilterDTO,它会起作用,但如果没有额外的上下文就很难判断 -
没有stacktrace,好像连java方法都没进去。