在Spring mvc中处理radiobutton处理起来也十分简单,分两类情况,先看普通的
简单的radiobutton,首先是一个简单的pojo,其中内容是字符串:
[code="java"]
public class TableReserve {
private String smokeZone;
public String getSmokeZone() {
return smokeZone;
}
public void setSmokeZone(String smokeZone) {
this.smokeZone = smokeZone;
}
}
[/code]
然后是一个controller,如下:
[code="java"]
@Controller
public class TableReserveController {
@RequestMapping(value="/table-reserve-page")
public ModelAndView tableReservePage() {
return new ModelAndView("table-reserve-form", "tableReserve", new TableReserve());
}
@RequestMapping(value="/table-reserve-result")
public ModelAndView processTableReserve(@ModelAttribute TableReserve tableReserve) {
ModelAndView mav = new ModelAndView("table-reserve-result");
mav.addObject("tableReserve", tableReserve);
return mav;
}
}
[/code]
tableReservePage这个方法是一个简单的展示radiobutton的页面而已,
其JSP模板文件为:
[code="java"]
<h1>Table Reserve page</h1>
<form:form method="POST" commandname="tableReserve" action="table-reserve-result.html">
<table>
<tbody><tr>
<td>Smoking</td>
<td><form:radiobutton path="smokeZone" value="yes"></form:radiobutton></td>
</tr>
<tr>
<td>No Smoking</td>
<td><form:radiobutton path="smokeZone" value="no"></form:radiobutton></td>
</tr>
<tr>
<td colspan="2">
<input value="Submit" type="submit">
</td>
</tr>
</tbody></table>
</form:form>
[/code]
请注意spring mvc中对radiobutton的写法,其中的path属性就刚好对应pojo中的smokeZone。
table-reserve-result方法实际上是接收页面用户选择的radiobutton,然后再进行页面跳转,最后跳转到的页面是
[code="java"]
...
<h1>Table Reserve result page</h1>
Do you choose smoking table?
Answer is: [ <b>${tableReserve.smokeZone}</b> ]
[/code]
如果是动态先生成的radiobuttons,也是可以的,继续看例子:
[code="java"]
public class Sport {
private String favSport;
public String getFavSport() {
return favSport;
}
public void setFavSport(String favSport) {
this.favSport = favSport;
}
}
[/code]
上面依然是简单的pojo,然后是控制器:
[code="java"]
@Controller
public class SportController {
@RequestMapping(value="/sport-page")
private ModelAndView footballPage() {
ModelAndView mav = new ModelAndView("sport-form");
List sportList = new ArrayList();
sportList.add("Judo");
sportList.add("Basketball");
sportList.add("Ping-Pong");
mav.addObject("sportList", sportList);
mav.addObject("sport", new Sport());
return mav;
}
@RequestMapping(value="/sport-result")
private ModelAndView processTeams(@ModelAttribute Sport sport) {
ModelAndView mav = new ModelAndView("sport-result");
mav.addObject("sport", sport);
return mav;
}
}
[/code]
则在footballPage方法中,是显示一个多个的radiobutton了,其中JSP文件为:
[code="java"]
<h1>Sport page</h1>
<form:form method="POST" commandname="sport" action="sport-result.html">
<table>
<tbody><tr>
<td>
[list]
<form:radiobuttons element="li" path="favSport" items="${sportList}">
</form:radiobuttons>[/list]
</td>
</tr>
<tr>
<td>
<input value="Submit" type="submit">
</td>
</tr>
</tbody></table>
</form:form>
[/code]
其中注意: <form:radiobuttons element="li" path="favSport" items="${sportList}">
的写法就可以了。
最后,展示结果页面JSP为:
[code="java"]
...
<h1>Sport result page</h1>
Your favorite sport is: ${sport.favSport}
[/code]