当我序列化表单并使用一些代码将序列化的查询字符串转换为 JSON 对象时,我插入的复选框:
<@spring.formCheckbox path="signUpDto.checkbox_terms" />
分别具有"on"和null的"选中">和"未选中"值。我用谷歌搜索了这种行为,我发现这是jQuery表单序列化的标准行为。
在我的 DTO 中,我的checkbox_terms
变量是这样声明的:
private boolean checkbox_terms;
但是,当我尝试将序列化的对象表单数据发布回服务器时,它会返回 400 错误(错误请求(。这可能是因为checkbox_terms
上的数据类型错误,因为两个值分别为"on"和null。
所以我的问题是,我应该如何处理这种情况?
为什么你认为问题来自复选框? 由于 415 错误意味着服务器不处理 POST 请求的内容类型,在这种情况下是应用程序/json。
我猜你使用Spring MVC。所以你可以尝试在RequestMapping中设置消耗="application/json"。
参考文献: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html#consumes--
只需将boolean
更改为字符串,如下所示:
private String checkbox_terms;
当您需要检查它是否被选中时,请执行
[dto].getCheckbox_terms().equalsIgnoreCase("on")
对于已选中或
![dto].getCheckbox_terms().equalsIgnoreCase("on")
为未选中。