在软件开发领域,单选按钮是图形用户界面的重要组成部分。 Spring MVC标签库为此表单元素提供了特殊标签。 更确切地说,有两个标签用于此目的:单选按钮,单选按钮。 两者对于特定任务都是有用的。 如您所知,我将在帖子中展示如何使用这些标签。
如果您熟悉我以前关于Spring MVC标签库的教程,特别是使用checkbox和checkboxes标签,那么本教程对您来说并不困难。 单选按钮(-s)标记的大部分解释将是多余的,因为一切都与复选框(-es)标记的示例相同。
您可以在GitHub上找到这篇文章中代码的完整版本。
单选按钮:字符串
在本节中,我将研究在同一页面上多次使用单选按钮标记的情况。 结果将表示为字符串对象。 这是此示例的POJO:
public class TableReserve {
private String smokeZone;
public String getSmokeZone() {
return smokeZone;
}
public void setSmokeZone(String smokeZone) {
this.smokeZone = smokeZone;
}
}
这是一个控制器,它将处理与表保留有关的操作:
@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;
}
}
在控制器中,一切都与通常情况相同。 如果您根本不了解Spring MVC控制器如何与表单交互,则可以阅读我有关表单处理的文章。
以下是适当视图的代码片段:
...
<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>
...
和
...
<h1>Table Reserve result page</h1>
Do you choose smoking table? <br />
Answer is: [ <b>${tableReserve.smokeZone}</b> ] <br />
...
这是第一个示例。
单选按钮:字符串
在本节中,我将考虑需要在运行时为单选按钮生成值的情况。 为此,我将在java.util.List对象中添加单选按钮的所有值(与checkboxes标记一样,您可以使用简单数组或java.util.Map对象)。
这是第二个示例的POJO:
public class Sport {
private String favSport;
public String getFavSport() {
return favSport;
}
public void setFavSport(String favSport) {
this.favSport = favSport;
}
}
合适的控制器:
@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;
}
}
如您所知,sportList包含我决定在运行时生成的值。
观看次数:
...
<h1>Sport page</h1>
<form:form method="POST" commandname="sport" action="sport-result.html">
<table>
<tbody><tr>
<td>
<ul>
<form:radiobuttons element="li" path="favSport" items="${sportList}">
</form:radiobuttons></ul>
</td>
</tr>
<tr>
<td>
<input value="Submit" type="submit">
</td>
</tr>
</tbody></table>
</form:form>
...
和
...
<h1>Sport result page</h1>
Your favorite sport is: ${sport.favSport}
...
摘要
这样,您可以在表单中添加单选按钮,您正在使用Spring MVC处理这些单选按钮。 标记库为所有表单控件的实现提供了简单的决策。 您只需要创建一个表单,对应的POJO,将其绑定在一起即可。
翻译自: https://www.javacodegeeks.com/2013/05/spring-mvc-form-handling-vol-4-radiobuttons.html