Spring Boot中如何正确传递Collection至JS事件处理器与REST控制器
Spring Boot无刷新表单提交中Set反序列化问题解决
问题场景
我在Spring Boot项目里改造表单实现无刷新提交:用jQuery阻止表单默认提交行为,通过fetch发送PUT请求到REST控制器。但User实体中声明为Set<Role>类型的authorities字段,在请求传递时触发JSON反序列化错误:
无法将字符串值反序列化为HashSet
无效尝试
- 自定义
Formatter处理Collection类型转换 - 创建jsonify Bean将Collection转为普通字符串格式
解决步骤
- 调整jsonify Bean的输出格式:将StringJoiner的前缀设为
[、后缀设为],让authorities字段的输出符合JSON数组结构 - 修正jQuery元素选择器:
- 把错误的
input[name=department]替换为select[name=department],匹配实际的表单控件类型 - 使用
$(this).find()定位当前表单内的元素,避免全局选择器导致的元素匹配错误
- 把错误的
- 前端解析JSON数组:在JS代码中对
authorities字段的取值执行JSON.parse(),确保传递给fetch请求的是合法的JSON数组类型数据
内容的提问来源于stack exchange,提问作者Sergey Zolotarev
相关产品推荐
相关产品推荐

