2014-12-30 106 views
0

這裏是我的代碼片段:Thymeleaf +春複選框沒有約束力

車輛類別:

// Duplicates 
private Boolean regCard = true; 
private Boolean decal; 
private Boolean title; 

public Boolean getRegCard() { 
    return regCard; 
} 

public void setRegCard(Boolean regCard) { 
    this.regCard = regCard; 
} 

public Boolean getDecal() { 
    return decal; 
} 

public void setDecal(Boolean decal) { 
    this.decal = decal; 
} 

public Boolean getTitle() { 
    return title; 
} 

public void setTitle(Boolean title) { 
    this.title = title; 
} 

Thymeleaf:

     <form method="post" th:action="${flowExecutionUrl}" th:object="${customerModel.vehicle}"> 
         <div class="duplicates"> 
          <ul> 
           <li><label>What do you need to duplicate?</label> 
            <div class="regTitle"> 
             <label>Registration Card 
              <input type="checkbox" th:field="*{regCard}"/> 
             </label> 
             <label>Decal 
              <input type="checkbox" th:field="*{decal}"/> 
             </label> 
             <div th:switch="*{vehicleType}"> 
              <div th:case="'BR'"> 
               <label>Title 
                <input th:type="checkbox" th:field="*{title}"/> 
               </label> 
              </div> 
             </div> 
            </div> 
           </li> 
          </ul> 
          <div class="clear"></div> 
         </div> 
         <div class="btm-btn-row"> 
          <div class="btm-btn-left"> 
           <a th:href="@{'~' + ${flowExecutionUrl}(_eventId='back')}">back</a> 
          </div> 
          <div class="btm-btn-right"> 
           <input type="submit" value="continue" name="_eventId_continue" /> 
          </div> 
         </div> 
        </form> 

生成的HTML:

<form method="post" action="/IllinoisRVSWeb/main-flow?execution=e1s4"> 
         <div class="duplicates"> 
          <ul> 
           <li><label>What do you need to duplicate?</label> 
            <div class="regTitle"> 
             <label>Registration Card 
              <input type="checkbox" id="vehicle.regCard1" name="vehicle.regCard" value="true" checked="checked" /><input type="hidden" name="_vehicle.regCard" value="on" /> 
             </label> 
             <label>Decal 
              <input type="checkbox" id="vehicle.decal1" name="vehicle.decal" value="true" /><input type="hidden" name="_vehicle.decal" value="on" /> 
             </label> 
             <div> 
              <div> 
               <label>Title 
                <input type="checkbox" id="vehicle.title1" name="vehicle.title" value="true" /><input type="hidden" name="_vehicle.title" value="on" /> 
               </label> 
              </div> 
             </div> 
            </div> 
           </li> 
          </ul> 
          <div class="clear"></div> 
         </div> 
         <div class="btm-btn-row"> 
          <div class="btm-btn-left"> 
           <a href="/IllinoisRVSWeb/main-flow?execution=e1s4&amp;_eventId=back">back</a> 
          </div> 
          <div class="btm-btn-right"> 
           <input type="submit" value="continue" name="_eventId_continue" /> 
          </div> 
         </div> 
        </form> 

問題:

提交時,布爾值永遠不會被設置。 我試過另一種方式。使用List對象並將該變量綁定到複選框,每個複選框都使用正確的th:value =「'SOMETEXT'」。但該對象也保持爲空。

正如你所看到的,我預先設置了一個值爲true,看它是否會出現在html端。它成功了。所以它至少要檢索價值,但如果它的價值發生了變化,它就不會設置它。另外,正如你所看到的,我嘗試使用「th:value =」複選框「」來查看是否有幫助。它沒。

Thymeleaf 2.1.4版

春4.1.4

訪問Spring WebFlow 2.4.0

任何幫助或建議將是巨大的。

由於

+0

當T中的另一頁需要提交表單他正在開發的網站,我能夠成功使用複選框並將正確的布爾值發送到後端。我在比較這兩頁,看看我做了什麼不同,但乍看之下沒有看到任何差異。 – MSwezey

回答

0

SIGH ...那麼我找到了解決方案。

我很容易被忽視的一個Webflow XML DEF文件中爲子流程和視圖狀態我在

我有什麼:

<view-state id="duplicate" view="duplicates"> 
    <transition on="continue" to="checkVehicleInfo" /> 
    <transition on="back" to="finished" /> 
</view-state> 

少了什麼作爲視圖狀態的屬性:

model="customerModel" 

這是使用Spring Webflow的

0

我想,可能的解決方案是:

通複選框的值作爲請求參數

<label>Registration Card 
<input type="checkbox" name="retCardChecked"/> 

,然後抓住它在控制器和設置爲車輛對象

@RequestParam("retCardChecked") boolean retCardChecked, ... 
+0

我使用Spring WebFlow,所以我目前沒有實現任何控制器。如果我找不到適合我的問題的解決方案,那麼我可以爲此實例使用控制器。如果可能,儘管我寧願遵守我的設計方案。 – MSwezey

+0

我會去看看WebFlow)) – Andrey