Spring MVC:表单处理卷。 2 –复选框处理


很难想象现代Web应用程序中没有表单复选框的情况。 在之前的一篇文章中,我写了有关Spring MVC中的表单处理的文章 ,作为本系列文章的续篇,我将写有关Spring MVC表单的文章,尤其是关于复选框处理的文章 。 这篇文章将介绍标签的标准用法。 在以下情况下,我将检查复选框标记用法的三种情况:

  • Chekbox是布尔值
  • Chekbox是一个字符串值
  • 复选框组代表字符串数组

因此,您可以看到这三点很简单,但是需要开发人员方面的注意。 下面,我将描述如何实现这些情况,您可以在文章末尾下载源代码。

复选框:布尔值

对于第一种情况,我将使用以下域模型:

public class Hobby {private boolean hobbyExists;public boolean isHobbyExists() {return hobbyExists;}public void setHobbyExists(boolean hobbyExists) {this.hobbyExists = hobbyExists;}}

此类不需要任何解释,因为它是带有getter和setter的简单bean。 现在,我可以向您展示这种情况的视图:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
...
<h1>Hobby page</h1>
<form:form method="POST" commandname="hobby" action="hobby-result.html">
<table><tbody><tr><td>Is any hobby: </td><td><form:checkbox path="hobbyExists"></form:checkbox></td></tr><tr><td colspan="2"><input value="Submit" type="submit"></td></tr>
</tbody></table>  
</form:form>
...

注意,使用Spring表单标签意味着导入了适当的标签库。 复选框标签包含与域模型的属性相对应的属性路径 。 结果将显示在另一页上:

...
<h1>Hobby result page</h1>
Is any hobby? - ${hobby.hobbyExists} <br />
...

最后,我需要为所有这些东西声明一个控制器:

@Controller
public class HobbyController {@RequestMapping(value="/hobby-page")public ModelAndView hobbyFormPage() {return new ModelAndView("hobby-form", "hobby", new Hobby());}@RequestMapping(value="/hobby-result")public ModelAndView processHobby(@ModelAttribute Hobby hobby) {ModelAndView modelAndView = new ModelAndView("hobby-result");modelAndView.addObject("hobby", hobby);return modelAndView;}}

复选框:字符串

第二种情况将通过以下域模型进行解释:

public class JobOffer {private String parking;public String getParking() {return parking;}public void setParking(String parking) {this.parking = parking;}}

这种情况的观点与前一种观点略有不同:

...
<h1>Job Offer page</h1><form:form method="POST" commandname="job" action="job-result.html"><table><tbody><tr><td>Job with parking? - </td><td><form:checkbox path="parking" value="parking" /></td></tr><tr><td colspan="2"><input type="submit" value="Submit" /></td></tr></tbody></table>  </form:form>
...

注意,新属性出现在复选框标签中。 value属性表示域模型中的字符串属性。
结果将显示在另一页上:

...<h1>Job result page</h1><c:choose><c:when test="${job.parking != null}">You want job with ${job.parking}</c:when><c:otherwise>You want job without parking</c:otherwise></c:choose>
...

这个例子的控制器:

@Controller
public class JobController {@RequestMapping(value="/job-page")public ModelAndView jobOfferPage() {		return new ModelAndView("job-form", "job", new JobOffer());}@RequestMapping(value="/job-result")public ModelAndView processJob(@ModelAttribute JobOffer jobOffer) {ModelAndView modelAndView = new ModelAndView("job-result");modelAndView.addObject("job", jobOffer);return modelAndView;}
}

复选框:字符串数组

本教程的最后一种情况将描述如何将字符串数组绑定到域模型中的属性。 以相同的方式,您可以绑定java.util.Collection的值。 因此,域模型将如下所示:

public class Food {private String[] favoriteFruit;public String[] getFavoriteFruit() {return favoriteFruit;}public void setFavoriteFruit(String[] favoriteFruit) {this.favoriteFruit = favoriteFruit;}
}

具有以下形式的页面:

...
<h1>Fruit page</h1><form:form method="POST" commandname="food" action="food-result.html"><table><tbody><tr><td>Apple </td><td><form:checkbox path="favoriteFruit" value="apple" /></td></tr><tr><td>Orange </td><td><form:checkbox path="favoriteFruit" value="orange" /></td></tr><tr><td>Banana </td><td><form:checkbox path="favoriteFruit" value="banana" /></td></tr><tr><td colspan="2"><input type="submit" value="Submit" /></td></tr></tbody></table>  </form:form>
...

在处理过程中,复选框标记中的值将传递到字符串数组。
结果页面:

...
<h1>Food result page</h1>
You prefer:
<br /><c:foreach var="fruit" items="${food.favoriteFruit}">${fruit}<br /></c:foreach>
...

最后一种情况的控制器:

@Controller
public class FoodController {@RequestMapping(value="/food-page")public ModelAndView foodPage() {		return new ModelAndView("food-form", "food", new Food());}@RequestMapping(value="/food-result")public ModelAndView processFuits(@ModelAttribute Food food) {ModelAndView modelAndView = new ModelAndView("food-result");modelAndView.addObject("food", food);return modelAndView;}}

复选框标签功能

呈现带有表单的页面时,您可以打开其源代码,并看到类似以下内容的内容:

...
<input id="favoriteFruit1" name="favoriteFruit" type="checkbox" value="apple" />
<input type="hidden" name="_favoriteFruit" value="on" />
...

奇怪,附加输入从哪里出现? 官方文档解释了这一事实:

如果未选中HTML页面中的复选框,则在提交表单后,其值将不会作为HTTP请求参数的一部分发送到服务器,因此我们需要针对HTML中的这个问题的变通办法,以便进行Spring表单数据绑定上班。 checkbox标记遵循现有的Spring约定,其中为每个复选框包括一个带有下划线(_)前缀的隐藏参数。 通过这样做,您可以有效地告诉Spring:“该复选框在表单中可见,并且我希望与表单数据绑定到的我的对象无论如何都将反映该复选框的状态”。

摘要

本文为您提供了有关复选框标记用法的高级概述,但这只是基础。 在最近的文章中,我将向您展示Spring MVC中复选框使用的更多有趣情况。 您可以单击链接下载整个应用程序的源代码。

参考: Spring MVC:表单处理卷。 2 – Fruzenshtein的便笺博客中来自JCG合作伙伴 Alexey Zvolinskiy的复选框处理 。

翻译自: https://www.javacodegeeks.com/2013/05/spring-mvc-form-handling-vol-2-checkbox-processing.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给你的博客换个装-园子换装指南

博客园有很多漂亮的皮肤&#xff0c;但总是有一些地方我不大喜欢&#xff0c;所以经过慎重考虑&#xff0c;我决定亲自动手换个装。本文将介绍博客园换装的一些基础&#xff08;不涉及标准皮肤的做法&#xff09;&#xff0c;如果你想让你的博客更炫&#xff0c;可以参考本文入…

表格过滤器_气缸选型其实并不复杂,知道这些再也不怕选错气缸(附计算表格)...

文/第e机械气动系统概述在介绍气缸之前我们先了解一下气动系统。气动控制技术在国民经济各个领域&#xff0c;最近这些年, 它与传感器技术、电子信息技术密切融合&#xff0c;发展成为包括控制、传动和检测等在内的自动化技术, 现在已发展成为自动化领域的重要组成部分。气动控…

java中equals()和==的区别

java中的数据类型 基础数据类型 基础数据类型有byte、short、char、int、long、float、double、bool、String。除了 String 会比较地址,其它的基础类型的比较,使用 和 equals() 两者都是比较值。 String类的equals()方法源码 1 public boolean equals(Object anObject) {2 …

乒乓球比赛赛程_10月5日至10月11日中央电视台直播录播乒乓球比赛安排

10月5日至10月11日这一周中央电视台居然没有播乒乓球比赛?全国乒乓球锦标赛从5日开始进行各单项比赛&#xff0c;7日进行混双决赛&#xff0c;9日进行男双决赛和女单决赛&#xff0c;10日进行女双决赛和男单决赛。场场都是精彩好看的比赛&#xff0c;中央电视台体育频道一场都…

集合实例(集合覆盖)

集合覆盖是一种优化求解问题&#xff0c;对很多组合数学和资源选择问题给出了很好的抽象模型。 问题如下&#xff1a;给定一个集合S&#xff0c;集合P由集合S的子集A1到An组成&#xff0c;集合C由集合P中的一个或多个子集组成。如果S中的每个成员都包含在C的至少一个子集中则称…

关闭运动轨迹_网球初学者如何正确入门网球运动,有哪些学习细节

网球是一个非常有趣的球类运动。 当您开始入门时&#xff0c;您会越来越喜欢它。 那么网球初学者应该如何正确入门呢&#xff1f; 有什么独特的入门经验&#xff1f;即使没有网球经验&#xff0c;只要您能正确正确地进行定期训练&#xff0c;仍然可以取得很大的进步。首先&…

phpstorm+wamp+xdebug配置php调试环境

本篇文章主要是&#xff1a;教大家如果搭建一套phpstormwampxdebug调试php的环境现在大多数的程序员使用的调试方式一般都是echo, var_dump, file_put_contents等其他方式&#xff0c;效率比较低下&#xff0c;因此我们有必要学习用工具调试&#xff0c;工具调试主要可以用来解…

计算机专用英语1500词带音标,带音标的计算机英语1500词

带音标的计算机英语1500词 (46页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;29.9 积分&#xfeff;计算机专用英语词汇1500词《电脑专业英语》1. file [fail] n. 文件&#xff1b;v. 保存文件 2. …

需求改进与系统设计

第一部分 需求与原型改进 1.1改进的原型 1.1.1 改进说明 相较上一次的原型&#xff0c;这一次我们确定了主题颜色&#xff0c;并且使功能一眼就能看懂&#xff0c;让新用户能很快上手。 并且进一步完善了前期的调查问卷分析。得出结论同学们不去食堂吃饭的大部分原因是排队…

了解ADF Faces clientComponent属性

我相信大多数ADF开发人员都知道ADF Faces属性clientComponent 。 在这篇文章中&#xff0c;我将展示此属性实际上如何影响组件渲染以及它如何改变其行为。 让我们开始考虑一个非常简单的示例&#xff1a; <af:inputText label"Label 1" id"it1" /> …

谈谈一些有趣的CSS题目(十五)-- 谈谈 CSS 关键字 initial、inherit 和 unset

开本系列&#xff0c;谈谈一些有趣的 CSS 题目&#xff0c;题目类型天马行空&#xff0c;想到什么说什么&#xff0c;不仅为了拓宽一下解决问题的思路&#xff0c;更涉及一些容易忽视的 CSS 细节。解题不考虑兼容性&#xff0c;题目天马行空&#xff0c;想到什么说什么&#x…

小程序沉浸式_企业开发小程序:客户裂变式增长

最近几年&#xff0c;各行各业中都有不少企业、商家获客难窘境。因此&#xff0c;很多企业、商家想知道&#xff1a;"怎么做&#xff0c;才能获取到大量流量&#xff1f;"小编给大家推荐一种方式&#xff1a;开发一个微信小程序&#xff0c;然后利用小程序来获取大量…

[CSS] Scale on Hover with Transition

效果 源码 <!doctype html><html class"outline color"><head><meta charset"utf-8"><title>图片scale动画</title><style>.img-box {position: relative;width: 740px;height: 420px;overflow: hidden;}/* 彩色…

热敏电阻温度特性曲线_热敏电阻与体温计的应用关系

相信体温计大家都熟悉&#xff0c;热敏电阻与体温计的应用关系大家都知道吗&#xff1f;热敏电阻热敏电阻探头测量体温的原理又是什么呢&#xff0c;小编跟大家分析一下&#xff0c;希望以下详细的介绍能帮助到大家&#xff01;热敏电阻探头测量体温的原理分析如下&#xff1a;…

1.Strategy Pattern(策略模式)

策略模式&#xff08;Strategy Pattern&#xff09;&#xff1a; 我的理解&#xff0c;将代码中每个变化之处抽出&#xff0c;提炼成一个一个的接口或者抽象类&#xff0c;让这些变化实现接口或继承抽象类成为具体的变化类。再利用多态的功能&#xff0c;可将变化之处用接口或抽…

Spring MVC + Hibernate + Maven:CRUD操作示例

在本文中&#xff0c;我想研究一个Spring MVC Hibernate Maven用法的示例。 这套技术暗含领域领域的基础知识。 因此&#xff0c;我将尝试详细解释所有重要时刻。 其他没有主题的内容将提供指向更多详细信息源的链接。 在文章的结尾&#xff0c;我将发布GitHub的链接。 目标…

画出的点做交互_设计之下交互设计原型设计之概念设计

目录//交互设计//「设计之下」---交互设计&#xff1a;交互设计师是做什么的&#xff1f;上线的产品中那一块是交互设计师的产物呢&#xff1f;项目启动1.1「设计之下」---交互设计&#xff1a;项目启动之从想法到项目&#xff0c;什么是项目&#xff1f;1.2「设计之下」---交互…

Java集合之TreeMap源码解析上篇

上期回顾 上期我从树型结构谈到了红黑树的概念以及自平衡的各种变化&#xff08;指路上期←戳&#xff09;&#xff0c;本期我将会对TreeMap结合红黑树理论进行解读。 首先&#xff0c;我们先来回忆一下红黑树的5条基本规则。 1.结点是红色或者黑色&#xff0c; 2.根结点为黑色…

仪器和软件通讯测试软件,软件定义的仪器-测试测量-与非网

如同每个孩子所拥有的第一套LEGO玩具改变了他们对世界的认识一样&#xff0c;26年前&#xff0c;美国国家仪器通过NI LabVIEW系统设计软件&#xff0c;重新改变了人们对仪器的认知。今年&#xff0c;NI将再次重演历史&#xff0c;发布一款新型仪器&#xff0c;帮助测试工程师摆…

埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛 C序列变换...

链接&#xff1a;https://www.nowcoder.com/acm/contest/91/C来源&#xff1a;牛客网没有账号的同学这样注册&#xff0c;支持博主 题目描述 给定两个长度为n的序列&#xff0c;ai, bi(1<i<n), 通过3种魔法使得序列a变换为序列b&#xff0c;也就是aibi(1<i<n). 魔…