2013-08-20 24 views
0

如何在給定以下情況下綁定以下Bootstrap列表選擇器?從控制器傳遞到index.jsp的視圖模型中,我已經填充了選擇列表。但是,綁定似乎有很多變化。如何綁定spring mvc 3.2.2的引導列表選擇器?

class viewModel { 
    List<String> theList;  // <- populated in my GET controller code 
    String selectedListItem; // <- trying to figure out how to get selected list item? 
    o o o 
    // assume get/set 
} 

的index.jsp:

(我上回發精細提交按鈕點擊我可以訪問視圖模型只是需要弄清楚如何我可以從列表中獲取所選擇的項目)

<form class="form-horizontal" action="myController/indexSubmit" method="post"> 
     <select class="form-control" placeholder=".input-medium" height> 
      <c:forEach items="${viewModel.gettheList()}" var="item" varStatus="count"> 
       <option value="${count.index}">${item }</option> 
      </c:forEach> 
     </select> 
     <button type="submit" class="btn btn-primary btn-medium">Submit</button> 
    </form> 

控制器:

@RequestMapping(value="indexSubmit", method = RequestMethod.POST) 
public String indexSubmit(@ModelAttribute("viewModel") viewModel viewModel, ModelMap model) { 
    String item = viewModel.getselectedListItem(); // <- How can I pass this in? 
    System.out.println("Selected Item: " + item); 
    return "myController/index"; // <- want to add as query param: ?item=theItem 
} 

回答

2

你並不需要創建結合力專班元素的st。結合選擇與控制最簡單的例子:

控制器:

@RequestMapping(value = "/", method = RequestMethod.GET) 
public String index(HttpServletRequest request, Model model) { 
    List<String> listString = new ArrayList<String>(); 
    listString.add("hello"); 
    listString.add("world"); 
    listString.add("from"); 
    listString.add("Belarus"); 
    model.addAttribute("listString", listString); 
    return "index"; 
} 

@RequestMapping(value = "test", method = RequestMethod.POST) 
public String test(@RequestParam String selectedString, Model model) { 
    System.out.println(selectedString); 
    return "index"; 
} 

的index.jsp:

<form class="form-horizontal" action="${home}/test" method="post"> 
    <select name="listString" class="form-control"> 
     <c:forEach items="${listString}" var="item" varStatus="count"> 
      <option value="${count.index}">${item}</option> 
     </c:forEach> 
    </select> 
    <button type="submit" class="btn btn-primary btn-medium">Submit</button> 
</form> 

在提交表格,您將看到所選的項目指標在控制檯後的代碼。

如果你想運輸初始列表(listItem),你可以進行另一次選擇,所有選擇的項目和屬性multiple="multiple"並將其樣式設置爲display:none;在此之後聲明另一個參數@RequestParam List<String> listString,您將獲得最初的字符串數組。

關於添加PARAM:

return "myController/index"; // <- want to add as query param: ?item=theItem 

你不能傳遞參數的方式。那是因爲你返回的視圖名稱(簡單名稱的jsp的名片),但沒有url。如果你想要去的參數去網址可以使:

return "forward:/index?item=theItem"; 

希望它可以幫助

+0

這是真棒!非常感謝! – JaJ

+0

再次感謝這個很好的例子:QQ1-我如何得到被選擇的返回字符串而不是索引值? QQ2:我怎麼能指定name =「listString」,其中listString是模型視圖的一部分,而不是傳入的準系統字符串?所以:class mv {public String listString}? – JaJ

+0

A1:得到的字符串值,而不是指數:<期權價值= 「$ {項目}」> $ {}項A2:這是完全不同的情況。嘗試在本教程中查看jsp:http://www.tutorialspoint.com/spring/spring_mvc_form_handling_example.htm,而不是form:input使用form:select。查看本教程以更好地理解Spring窗體標籤:http://www.dzone.com/tutorials/java/spring/spring-form-tags-1.html – yname