在软件开发领域,单选按钮是图形用户界面的重要组成部分。 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