0

我希望視圖中的下拉列表可以使用控制器設置的值填充。在使用模型我控制器屬性我已經加入以填充用模型設定的值的下拉列表限制如何使用從控制器設置的哈希映射填充百里香下拉列表

@RequestMapping(value = "/works", method = RequestMethod.GET) 
    public String searchWorks(Model model){ 
    Map< Integer, String > limits = new HashMap<Integer, String>(); 
     limits.put(20, "20件"); 
     limits.put(25, "25件"); 
     limits.put(30, "30件"); 
     limits.put(35, "35件"); 
     limits.put(40, "40件"); 
     limits.put(45, "45件"); 
     limits.put(50, "50件"); 
    model.addAttribute("limits",limits); 
    model.addAttribute("limit",limit); 
    return "workSituation"; 
    } 

在視圖屬性我已經使用這個代碼

<div class="col-sm-3"> 
       <select class="form-control" name = "limit" id="limit" onchange="getList(this.value)"> 
        <option selected>-- select number of items--</option> 

        <option data-th-each="limit : ${limits}" 
             data-th-value="${limt.getKey()}" 
             data-th-text="${limt.getValue()}" > 

        </select> 
        </div> 

我得到錯誤

caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "limt.getKey()" 

caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "limt.getValue()" 

這將導致什麼原因。其實下拉的迭代7次(在限制列表中的記錄數),但鍵和值不能與code.What獲取是讓充滿

  <option value="20">20件</option> 
      <option value="25">25件</option> 
      <option value="30">30件</option> 
      <option value="35">35件</option> 
      <option value="40">40件</option> 
      <option value="45">45件</option> 
      <option value="50">50件</option> 
+0

它的'limit.getKey()'不'limt.getKey()'。與.getValue()相同。我不確定以下內容,但我認爲你希望使用'th:text =「」'而不是data-th-text和'th:value =「」'而不是data-th-value。不完全確定data-th- *是否做同樣的事情。 –

+0

謝謝它工作正常。實際上,data-th- *與此相同。我得到的列表並不像我插入的順序那樣會有什麼原因 –

+0

哈希映射不維護元素的順序。嘗試爲此使用linkedhashmap。很高興知道這些數據 –

回答

0

下拉對於thymeleaf嘗試的正確方法以下

<option th:each="limit : ${limits.entrySet()}" th:value="${limit.key}" th:text="${limit.value}"></option>