最近在开发,遇到前后端关于Boolean类型的参数传参和接收的问题:
场景:后台会根据用户是否出车/是否出司机(Boolean类型)来决定后端的业务逻辑(比如费用的计算),前端使用JSON字符串类型传输,后端使用@RequestBody接收对象...
前后端分离特殊内容规范
单选框、下拉框、复选框
由后端接口统一逻辑判定是否选中,通过isSelect标示是否选中,示例如下:
{
code: 200,
data: {
message: "success",
list: [{
id: 1,
isCarProvide: 1,
isDriverProvide: 0
}]
}
}
规定:禁止下拉框、复选框、单选框判定选中逻辑由前端来处理,统一由后端逻辑判定选中返回给前端展示;
Boolean类型参数的传值
关于Boolean类型,JSON数据传输一律使用 1/0 来标示,1为是/true,0为否/false,前端单选框/复选框表示boolean,后台使用boolean接收,前端value值使用true/false或者1/0都是可以自动转成boolean类型的,我做以下测试:
Test实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Test implements Serializable {
private static final long serialVersionUID = 2958237749066165066L;
private Boolean carProvide;
}
ApiTest
@Controller
public class ApiTest {
@PostMapping("/test")
@ResponseBody
public String booleanTest(@RequestBody Test test) {
Boolean isCarProvide = test.getCarProvide();
if (isCarProvide) {
return "Boolean test success, isCarProvide value is:" + isCarProvide.booleanValue();
} else {
return "Boolean test failed, isCarProvide value is:" + isCarProvide.booleanValue();
}
}
}
这里我得出了结论,前端boolean类型的传输value的值都规定使用0/1,后端直接使用Boolean类型接收,不需要我们手动转换!!!