Thymeleaf+Spring Boot项目从网页获取布尔值的实现方案咨询
实现方案
方案1:表单直接传递布尔值(推荐,无需额外转换)
前端HTML代码修改
直接将option的value设置为布尔字符串,select的name和实体类属性名保持一致:
<div class="col-2"> <select id="heroOrVillian" name="hero" class="form-control"> <option value="true">Hero</option> <option value="false">Villian</option> </select> </div>
如果使用Thymeleaf做字段绑定,注意模型属性名首字母小写(符合JavaBean规范),正确写法如下:
<div class="col-2"> <select id="heroOrVillian" th:field="${superHuman.hero}" class="form-control"> <option th:value="true">Hero</option> <option th:value="false">Villian</option> </select> </div>
注:之前Thymeleaf绑定报错大概率是因为你写的${SuperHuman.hero}首字母大写,和后端模型存入的属性名不一致,缺少对应getter/setter也会导致报错。
后端控制器代码修改
替换注释位置的代码:
// Request for boolean retrieval code here boolean isHero = Boolean.parseBoolean(request.getParameter("hero"));
替换setHero的注释代码:
superHuman.setHero(isHero);
方案2:保留原有1/2的option值,后端做映射转换
如果你不想修改前端option的value配置,也可以在后端手动做值映射:
前端代码无需修改,保留原有value="1"、value="2"的配置
后端控制器代码修改
替换注释位置的代码:
// Request for boolean retrieval code here String affiliation = request.getParameter("heroOrVillian"); boolean isHero = "1".equals(affiliation);
替换setHero的注释代码:
superHuman.setHero(isHero);
两种方案都可以实现需求,布尔类型数据在HTTP请求中本质是通过字符串传递的,Spring或JDK自带的布尔转换工具会自动将"true"字符串转为布尔true,其余字符串转为false。
内容的提问来源于stack exchange,提问作者Devon Dixon
相关产品推荐
相关产品推荐

