繁体   English   中英

Spring Rest:在RequestParam中传递一个对象

[英]Spring Rest : pass an object in 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 的属性 listFiltre 始终为空。

在前端(AngularJS)中,调用是:

function Affaire ($resource, DateUtils) {
        var resourceUrl =  'api/affaires/:id';

        return $resource(resourceUrl, {}, {
            'query': { method: 'GET', isArray: true,
                params:{
                    consultantId:'@consultantId',
                    filtres:'@filtres'
                },

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

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

    @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)

您可以阅读答案以更好地理解。 也会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM