我的Spring MVC應用程序基於Spring引導1.2.8,Thymeleaf,Hibernate和Hateos。我有一個實體「市場」與布爾類型的「啓用」字段。Thymeleaf + Spring MVC中的綁定複選框
@Entity
@Table(name = "market")
public class Market {
.....
private Boolean enabled;
....
public Boolean getEnabled() {
return enabled;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
}
在控制器代碼爲 「/創建」
@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"));
}
模板 「市場/製造」,參考。 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>
當打開/市場/創建在瀏覽器中收到以下異常就行與複選框
Cause: org.thymeleaf.exceptions.TemplateProcessingException Attribute "value" is required in "input(checkbox)" tags when binding to non-boolean values
爲什麼Thymeleaf考慮場「已啓用」非布爾類型?我竭盡全力找出原因,但徒勞無功。 Plz給出一些提示來解決它。謝謝。
感謝大衛,我早些時候嘗試過「價值」,但在DB中保存時忽略它。據我所知,沒有必要在形式上增加「價值」,以春豆爲後盾,由百里香做成。如果我錯了,請糾正我。例。 https://github.com/thymeleaf/thymeleafexamples-stsm/blob/2.1-master/src/main/webapp/WEB-INF/templates/seedstartermng.html,找到 – fh76
你是對的,對不起,我犯了一個錯誤,如果你刪除'value'屬性,'enabled'屬性應該被初始化。 –
是的,也試過了。在實體類中創建了「private Boolean enabled = Boolean.FALSE」,但是thymeleaf並未將其視爲「布爾」並繼續拋出異常。我正在看示例https://github.com/thymeleaf/thymeleafexamples-stsm/blob/2.1-master/src/main/java/thymeleafexamples/stsm/business/entities/SeedStarter.java,它有一個字段「覆蓋「布爾類型。 – fh76