如何让 Thymeleaf 为 SpringBootMVC 解析布尔值? [ThymeLeaf-SpringBoot-Java17]
How to get Thymeleaf to parse boolean for SpringBootMVC? [ThymeLeaf-SpringBoot-Java17]
所以我在 HTML 中有一个硬编码的 true/false 值,所以我可以在 HTML 表单提交后使用它来填充我的一个实体的 E.bool 值(POST).
HTML
// I tried
<select id="isBool" name="isBool" class="form-select" aria-label="select">
<option value="1">true option</option>
<option value="0">false option</option>
</select>
// then I tried
<select id="isBool" name="isBool" class="form-select" aria-label="select">
<option th:value="1">true option</option>
<option th:value="0">false option</option>
</select>
// then I tried
<select id="isBool" name="isBool" class="form-select" aria-label="select">
<option th:value="${true}">true option</option>
<option th:value="${false}">false option</option>
</select>
实体
@Entity
@Table
public class E {
..
@Column
boolean bool
..
}
控制器
public String addE(@Valid E e, BindingResult result, HttpServletRequest request, Model model) {
...
// no matter what, E has bool = false here :(
...
}
我做错了什么?无论我尝试什么,它总是错误的。
最疯狂的是,我真的可以转到我的 IntelliJ 并在调试器中看到 request.parameters 在那里有正确的值!这是怎么回事?为什么 ThymeLeaf/Spring 这么难?有没有更简单的方法通过控制器获取这样的布尔值?
令人惊讶的是,这是布尔成员字段的 getters 错误。我的 IDE 将其生成为“isBool”而不是“getBool”,显然 Thymeleaf 仅查找文字 getter 和 setter。
所以我在 HTML 中有一个硬编码的 true/false 值,所以我可以在 HTML 表单提交后使用它来填充我的一个实体的 E.bool 值(POST).
HTML
// I tried
<select id="isBool" name="isBool" class="form-select" aria-label="select">
<option value="1">true option</option>
<option value="0">false option</option>
</select>
// then I tried
<select id="isBool" name="isBool" class="form-select" aria-label="select">
<option th:value="1">true option</option>
<option th:value="0">false option</option>
</select>
// then I tried
<select id="isBool" name="isBool" class="form-select" aria-label="select">
<option th:value="${true}">true option</option>
<option th:value="${false}">false option</option>
</select>
实体
@Entity
@Table
public class E {
..
@Column
boolean bool
..
}
控制器
public String addE(@Valid E e, BindingResult result, HttpServletRequest request, Model model) {
...
// no matter what, E has bool = false here :(
...
}
我做错了什么?无论我尝试什么,它总是错误的。
最疯狂的是,我真的可以转到我的 IntelliJ 并在调试器中看到 request.parameters 在那里有正确的值!这是怎么回事?为什么 ThymeLeaf/Spring 这么难?有没有更简单的方法通过控制器获取这样的布尔值?
令人惊讶的是,这是布尔成员字段的 getters 错误。我的 IDE 将其生成为“isBool”而不是“getBool”,显然 Thymeleaf 仅查找文字 getter 和 setter。