2016-02-16 210 views
0

我的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給出一些提示來解決它。謝謝。

回答

0

無論如何,屬性value是強制性的。

嘗試類似這樣:<input type="checkbox" th:field="*{enabled}" value="true" />。當您檢查輸入時,enabled字段應該設置爲true;否則爲null

+0

感謝大衛,我早些時候嘗試過「價值」,但在DB中保存時忽略它。據我所知,沒有必要在形式上增加「價值」,以春豆爲後盾,由百里香做成。如果我錯了,請糾正我。例。 https://github.com/thymeleaf/thymeleafexamples-stsm/blob/2.1-master/src/main/webapp/WEB-INF/templates/seedstartermng.html,找到 fh76

+0

你是對的,對不起,我犯了一個錯誤,如果你刪除'value'屬性,'enabled'屬性應該被初始化。 –

+0

是的,也試過了。在實體類中創建了「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

0

嘗試命名屬性,而不是'啓用',也許'marketEnabled'。