You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Controller如何接收React表格传递的嵌套索引格式查询参数

解决方案

错误原因

你的报错是由3个核心不匹配问题导致的:

  • 属性名不匹配:前端传递的过滤参数前缀为filtered,但你的SearchDTO中定义的过滤列表字段名为filters,Spring MVC参数绑定无法对应
  • 字段类型错误:你定义的过滤参数类中id为int类型,但前端传递的filtered[N][id]是字符串类型的表列名,无法完成类型转换
  • 命名不统一:你定义的过滤参数类名为SearchFilters,但SearchDTO中声明的列表泛型为FilterDTO,类名不匹配

修正步骤

1. 统一并修正过滤参数类

// 统一命名为FilterDTO,修正id字段类型为字符串
public class FilterDTO {
    // 存储前端传递的列名,用String类型
    private String id;
    // 存储前端传递的过滤值
    private String value;

    // 必须添加无参构造
    public FilterDTO() {}

    // 必须添加所有字段的getter、setter,Spring MVC参数绑定依赖该方法
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

2. 修正SearchDTO定义

public class SearchDTO{
    private int pageNumber;
    private int pageSize;
    private int total;
    private int pages;
    // @JsonFormat注解仅作用于JSON请求/响应体,GET请求查询参数绑定不生效,可删除
    private List<Long> ids;
    // 字段名必须和前端参数前缀"filtered"完全一致
    private List<FilterDTO> filtered;

    // 必须添加无参构造
    public SearchDTO() {}

    // 补全所有字段的getter、setter,此处仅示例过滤字段相关方法
    public List<FilterDTO> getFiltered() {
        return filtered;
    }

    public void setFiltered(List<FilterDTO> filtered) {
        this.filtered = filtered;
    }

    public List<Long> getIds() {
        return ids;
    }

    public void setIds(List<Long> ids) {
        this.ids = ids;
    }

    // 请自行补全pageNumber、pageSize等其余字段的getter、setter方法
}

3. 控制器代码无需修改

保持原有控制器代码即可,参数绑定完成后可直接通过searchDTO.getFiltered()获取所有过滤规则:

@GetMapping("/search")
public ResponseEntity<DashboardDTO> search(SearchDTO searchDTO){
    // 业务逻辑
}

特殊情况处理

如果你使用的Spring Boot版本低于2.2,参数绑定仍报错的话,可以通过直接接收参数Map手动解析的方式处理:

@GetMapping("/search")
public ResponseEntity<DashboardDTO> search(@RequestParam Map<String, String> params){
    // 手动从params中解析filtered[N][id]、filtered[N][value]格式的参数
}

内容的提问来源于stack exchange,提问作者Guillermo Balboa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:57:03