2016-02-12 41 views
0

我試過了幾個不同的選項,但我似乎無法填充下拉列表,除非我使用靜態html數據,我試圖避免。無法讓Spring填充選項框

我簡單的例子是:

生成的ModelAndView被渲染,使用值從對象的選擇和tadaaa列表。

簡單的控制器:

@RequestMapping("/") 
public ModelAndView indexPage(HttpServletRequest request) 
     throws Exception { 

    ArrayList<String> numberOfKids = new ArrayList<String>(); 
    numberOfKids.add("-Small People-"); 
    numberOfKids.add("0"); 
    numberOfKids.add("1"); 
    numberOfKids.add("2"); 

    ModelAndView modelAndView = new ModelAndView("index"); 
    modelAndView.addObject("numberOfKids", numberOfKids); 

    return modelAndView; 
} 

查看:我都試過有形式的變種春:選擇和形式:選項和百里香葉版本 - 兩者都沒有渲染。

<div class="form-group"> 
    <form:select name="numberOfKids" id="numberOfKids" tabindex="3"> 
     <option th:each="number : ${numberOfKids}" 
      th:value="${number}" 
      th:text="${number}"> 
     </option> 
    </form:select> 
</div> 

在控制檯中,沒有值,它也有一個顯示類:沒有這是奇怪的,因爲我沒有添加它。

任何英雄都會讚賞,我想象它是一件小事,因爲我匆忙但無法將焦點帶回 - 而我的調試器已經死了一次緩慢的痛苦的死亡,而這並沒有幫助。 :(

編輯: 怪異還是...... 如果我複製塊到另一個選擇,第二個填充...

<div class="form-group"> 
    <select name="numberOfAdults" id="numberOfAdults" tabindex="2"> 
     <option th:each="String : ${numberOfKids}" th:value="${String}" th:text="${String}"> 
     </option> 
    </select> 
</div> 
<div class="form-group"> 
    <form:select name="numberOfKids" id="numberOfKids" tabindex="3"> 
     <option th:each="String : ${numberOfKids}" th:value="${String}" th:text="${String}"> 
     </option> 
    </form:select> 
</div> 

回答

0

試試這個:

<form:select items="${numberOfKids}" /> 

通常它的與Map一起使用而不是List,因此您將會填寫文本和值。

+0

我曾嘗試過,但它也沒有工作。我現在開始想知道這與jQuery插件選擇框有什麼關係。 – null

+0

沒有看到整個事情很難說。通常,在使用彈簧窗體時,必須聲明一個路徑屬性,該屬性是在發佈表單時將接收值的對象。 –

1

thymeleaf不明白<form:select... />(這個標籤是JSP taglib)。相反,您應該使用<select th:field="*{numberOfKids}">。欲瞭解更多信息read this

+0

你說得對,除了在這種情況下不需要'th:field'。因爲原始代碼的標籤中沒有'path'屬性。無論如何,投票了。 –

2

您不應該在Thymeleaf模板中使用JSP標記作爲<form:select/>,因爲Thymeleaf無法處理此標記。取而代之的是使用簡單的html <select/>標籤:

<div class="form-group"> 
    <select name="numberOfKids" id="numberOfKids" tabindex="3"> 
     <option th:each="String : ${numberOfKids}" th:value="${String}" th:text="${String}"> 
     </option> 
    </select> 
</div>