我的Spring MVC应用程序基于Sping Boot 1.2.8,Thymeleaf,Hibernate和Hateos。我有一个实体“市场”与一个领域“启用”类型布尔。
@Entity
@Table(name = "market")
public class Market {
.....
private Boolean enabled;
....
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
}
字符串
在控制器中为“/create”编写代码
@RequestMapping(value = "/create", method = RequestMethod.GET)
public ModelAndView create() {
return new ModelAndView("market/create")
.addObject("list", linkTo(methodOn(MarketController.class).list())
.withRel("List"))
.addObject("market", new Market())
.addObject("postLink",
linkTo(methodOn(MarketController.class).save(null, null, null, null))
.withRel("Save"));
}
型
模板“market/create”,参考http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#checkbox-fields
<form th:action="${postLink.href}" th:object="${market}" method="post">
....
<div class="form-group">
<label th:for="${#ids.next('enabled')}" th:text="#{market.enabled}">Enabled</label>
<input type="checkbox" th:field="*{enabled}" />
</div>
....
</form>
型
当在浏览器中打开/markets/create时,在带有复选框的行上显示以下异常
Cause: org.thymeleaf.exceptions.TemplateProcessingException Attribute "value" is required in "input(checkbox)" tags when binding to non-boolean values
型
为什么Thymeleaf将字段“enabled”视为非布尔类型?我已尽了最大的努力去找出原因,但没有成功。请给予一些提示来解决它。- 谢谢-谢谢
4条答案
按热度按时间deyfvvtc1#
控制器
字符串
DTO
型
HTML
型
这里最重要的是如何定义
th:field="${demoDto.global}"
。这里需要$
和对象名称demoDto
。生成的html代码将是。
型
当从ui收到提交时:
型
pexxcrt22#
在任何情况下,属性
value
都是必需的。试试这样的方法:
<input type="checkbox" th:field="*{enabled}" value="true" />
。enabled
字段应该在检查输入时由true
设置;null
否则。8zzbczxx3#
尝试将您的属性命名为“启用”以外的名称,例如“市场启用”。
d6kp6zgx4#
字符串
当我们选中复选框输入时,它将该复选框的值设置为“true”。这在我的情况下工作得很好。