spring mvc中下拉框,其实是很简单的了,但简单的东西还是应该多复习,这次来复习下.
1)controller:
@RequestMapping(value="/phone-page")
private ModelAndView selectTag() {
ModelAndView mav = new ModelAndView("phone-form");
Map<String, String> phones = new HashMap<String, String>();
phones.put("samsung", "SAMSUNG");
phones.put("nokia", "NOKIA");
phones.put("iphone", "IPHONE");
mav.addObject("phonesMap", phones);
mav.addObject("smartphone", new Smartphone());
return mav;
}
这里其实用HashMap去装载下拉列表,然后放到modelandview中去,然后前端的页面jsp
Select phone:
<form:form method="POST" commandName="smartphone" action="phone-result.html">
<table>
<tr>
<td>
[list]
<form:select path="phone" items="${phonesMap}"/>
[/list]
</td>
</tr>
<tr>
<td>
<input type="submit" value="Submit"/>
</td>
</tr>
</table>
</form:form>
这里的submit演示了选择某个选项后,提交到phone-result这个方法控制器中,
控制器中的方法代码为:
@RequestMapping(value="/phone-result")
private ModelAndView processPhone(@ModelAttribute Smartphone smartphone) {
ModelAndView mav = new ModelAndView("phone-result");
mav.addObject("smartphone", smartphone);
return mav;
}
可以看到<form:form method="POST" commandName="smartphone" action="phone-result.html">,而接受的参数中,用@ModelAttribute Smartphone smartphone接收住了.
2) 第2种方法是在JSP页面中硬编码下拉选项,如:
<form:form method="POST" commandname="smartphone" action="phone-result.html">
<table>
<tbody><tr>
<td>
[list]
<form:select path="phone">
<form:option value="samsung">SAMSUNG</form:option>
<form:option value="nokia">NOKIA</form:option>
<form:option selected="selected" value="htc">HTC</form:option>
<form:option value="iphone">IPHONE</form:option>
</form:select>
[/list]
</td>
</tr>
<tr>
<td>
<input value="Submit" type="submit">
</td>
</tr>
</tbody></table>
</form:form>
当然呈现这个jsp的控制层为:
@RequestMapping(value="/phone-option-page")
private ModelAndView optionTag() {
return new ModelAndView("phone-option-form", "smartphone", new Smartphone());
}
3 最后一个看<form:options>的用法
控制器方法:
@RequestMapping(value="/phone-options-page")
private ModelAndView optionsTag() {
ModelAndView mav = new ModelAndView("phone-options-form");
Map< String, String > phones = new HashMap();
phones.put("samsung", "SAMSUNG");
phones.put("nokia", "NOKIA");
phones.put("iphone", "IPHONE");
phones.put("bberry", "BLACKBERRY");
phones.put("htc", "HTC");
mav.addObject("phonesMap", phones);
mav.addObject("smartphone", new Smartphone());
return mav;
}
注意页面JSP为:
Select phone:
<form:form method="POST" commandname="smartphone" action="phone-result.html">
<table>
<tbody><tr>
<td>
[list]
<form:select path="phone">
<form:option value="-" label="--Select phone">
<form:options items="${phonesMap}">
</form:options></form:option></form:select>
[/list]
</td>
</tr>
<tr>
<td>
<input value="Submit" type="submit">
</td>
</tr>
</tbody></table>
</form:form>