Spring MVC:表单处理卷。 5 –选择,选项,选项标签

下拉列表是Web表单中最常见的元素之一。 在HTML中,可以使用适当的标签创建此类控件: <form:select> –下拉列表的父标签和<form:option><form:select>标签的子标签。 Spring MVC标签库为下拉列表提供了自己的解决方案。 在这篇文章中,我将写关于<form:select><form:option><form:options>标签。 Spring-MVC-下拉

在以前的有关使用Spring MVC进行表单处理的文章中,我概述了需要将文本字段,复选框或单选按钮与Java对象绑定的情况。 对于select下拉列表元素,几乎将重复所有步骤。 此外,在使用Spring MVC标签库将其与java对象绑定的上下文中,我将通过下拉列表检查三种情况。 第一种情况是有关form:select标记,其值基于java.util.Map ,第二种情况是有关form:select标记与form:option标记结合使用的,第三种情况是有关form的用法:选择标记与form:options标记结合使用。

每个示例都将具有相同的结果jsp页面,因此只有表单页面和它们的控制器是不同的。 配置的设置将被省略,因为在上一篇文章中已对此进行了说明。

Spring MVC选择标签

假设Web应用程序的用户可以选择手机的生产商(例如HTC,SAMSUNG,IPHONE等)。 我们可以使用Spring MVC表单标签库以几种方式实现此目的。

域模型:

public class Smartphone {private String phone;public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}}

此类将绑定到表单。

SmartphoneController:

...@RequestMapping(value="/phone-page")private ModelAndView selectTag() {ModelAndView mav = new ModelAndView("phone-form");Map< String, String > phones = new HashMap();phones.put("samsung", "SAMSUNG");phones.put("nokia", "NOKIA");phones.put("iphone", "IPHONE");mav.addObject("phonesMap", phones);mav.addObject("smartphone", new Smartphone());return mav;}@RequestMapping(value="/phone-result")private ModelAndView processPhone(@ModelAttribute Smartphone smartphone) {ModelAndView mav = new ModelAndView("phone-result");mav.addObject("smartphone", smartphone);		return mav;}
...

selectTag()方法中,我创建一个具有值的Map,这些值将在下拉菜单中显示在页面上。 第二种方法processPhone(@ModelAttribute Smartphone Smartphone,将用作所有示例的共享端点。

此示例的JSP:

<h1>Phone page</h1>
Select phone:
<form:form method="POST" commandname="smartphone" action="phone-result.html">
<table><tbody><tr><td><ul><form:select path="phone" items="${phonesMap}"></form:select></ul></td></tr><tr><td><input value="Submit" type="submit"></td></tr>
</tbody></table>  
</form:form>

Spring-MVC-选择

而已

Spring MVC选项标签

第二个示例将使用<form:option>标记的硬编码值。

控制器:

...@RequestMapping(value="/phone-option-page")private ModelAndView optionTag() {		return new ModelAndView("phone-option-form", "smartphone", new Smartphone());}
...

注意JSP:

<h1>Phone page</h1>
Select phone:
<form:form method="POST" commandname="smartphone" action="phone-result.html">
<table><tbody><tr><td><ul><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></ul></td></tr><tr><td><input value="Submit" type="submit"></td></tr>
</tbody></table>  
</form:form>

Spring MVC选项标签

最后一个示例演示如何使用<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:

...
<h1>Phone page</h1>
Select phone:
<form:form method="POST" commandname="smartphone" action="phone-result.html">
<table><tbody><tr><td><ul><form:select path="phone"><form:option value="-" label="--Select phone"><form:options items="${phonesMap}"></form:options></form:option></form:select></ul></td></tr><tr><td><input value="Submit" type="submit"></td></tr>
</tbody></table>  
</form:form>
...

如Spring官方文档中所指定的,您可以将任何类型的带有适当的getter和setter的java对象用于以下形式:options标签: items属性通常填充有item对象的集合或数组。 如果已指定,则itemValueitemLabel只是引用那些item对象的bean属性; 否则,item对象本身将被字符串化。 或者,您可以指定项目映射,在这种情况下,映射键将解释为选项值,并且映射值对应于选项标签。 如果恰好同时指定了itemValue和/或itemLabel ,则item value属性将应用于地图键,item label属性将应用于地图值。

摘要

这些示例中的每一个在特定情况下都是方便的,应合理使用。 <form:option>标记可以在不需要大量选项的小型项目中使用,当您在数据库中存储下拉列表的值或当您在数据库中存储下拉列表的值时,应使用<form:options>需要在运行时生成值。 您可以在GitHub上找到本教程的源代码。

参考: Spring MVC:表单处理卷。 5 – Fruzenshtein的便笺博客中的JCG合作伙伴 Alexey Zvolinskiy的select,option,options标签 。

翻译自: https://www.javacodegeeks.com/2013/07/spring-mvc-form-handling-vol-5-select-option-options-tags.html

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

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

相关文章

06.linux平台下运行go文件

1.获取linux位数 getconf LONG_BIT 2.下载地址&#xff1a; https://studygolang.com/dl 3.解压安装包 sudo tar -xzf go1.9.2.linux-amd64.tar.gz -C /usr/local 4.设置环境变量 sudo vi /etc/profile export GOROOT/usr/local/go export GOBIN$GOROOT/bin export GOPATH/h…

python3读取ini文件_python3配置文件ini读取方法

1.最常用的Plain text形式的配置文件 1.1首选 .init 文件 标准库 configparser 1.2次选 csv文件 与 Unix/Linux 下常用的 xx xxx形式的配置文件 分别是标准库csv 与 shlex 2.最常用的二进制级配置文件 2.1持久化数据首选shelve 标准库 shelve 2.2shelve的对于一些项目我们需要…

Python的看门狗实现自动化实时对服务器、Windows或Linux文件夹的实时监控

众所周知&#xff0c;在运维过程中&#xff0c;实时获取目标文件夹至关重要&#xff0c;Python的watchdog是用程序来监视文件系统事件Python库&#xff0c;所以用该库可以实现对文件夹的实时监控&#xff0c;filenotify.py代码如下&#xff1a; # -*- coding: utf-8 -*- #!/usr…

在html中样式表的三种类型,css样式有哪几种类型?

CSS样式可以写在哪些地方呢&#xff1f;从CSS 样式代码插入的形式来看基本可以分为以下3种&#xff1a;内联式、嵌入式和外部式三种。下面本篇文章就来给大家介绍一下CSS样式的类型&#xff0c;希望对大家有所帮助。内联式样式内联式css样式表就是把css代码直接写在现有的HTML标…

DIV CSS浏览器的兼容性

1. 文字本身的大小不兼容。同样是font-size:14px的宋体文字&#xff0c;在不同浏览器下占的空间是不一样的&#xff0c;ie下实际占高16px&#xff0c;下留白3px&#xff0c;ff 下实际占高17px&#xff0c;上留白1px&#xff0c;下留白3px&#xff0c;opera下就更不一样了。解决…

记录合规性–关于TCK,规格和测试

使用软件规格非常困难。 不论在哪个地方提出&#xff1b; 您最终遇到了一个大问题&#xff1a;是否已实施并测试了所有指定的内容&#xff1f; 在瀑布驱动的方法学时代&#xff0c;这一直是一个问题&#xff0c;即使在撰写本文的今天&#xff0c;敏捷性和用户故事仍然不能保证您…

arcgis已试图对空几何执行该操作_ArcGIS中地理配准与空间校正的不同

ArcGIS中地理配准与空间校正都是用于数据坐标变换的目的&#xff0c;他们之间有什么区别呢&#xff1f;1、处理对象不同&#xff1a;地理配准针对栅格数据&#xff0c;而空间校正针对矢量数据。因此空间校正需要建立在矢量数据编辑的基础上&#xff0c;空间校正之前应开始编辑。…

【计算机视觉】深度学习视觉领域常用数据集汇总

本文结合笔者在研究生学习、科研期间使用过以及阅读文献了解到的深度学习视觉领域常用的开源数据集&#xff0c;进行介绍和汇总。MNIST深度学习领域的“Hello World!”&#xff0c;入门必备&#xff01;MNIST是一个手写数字数据库&#xff0c;它有60000个训练样本集和10000个测…

CSS Hack 汇总速查一览

由于浏览器之间存在兼容性问题&#xff0c;在制作网页的时候&#xff0c;为了使页面能在不同浏览器中显示相对一致或者其他原因&#xff0c;网页制作人员总结了种种 Hack 方法&#xff1b;在解 决兼容性问题之前&#xff0c;这些方法还经常会用到。接下来&#xff0c;大前端将给…

玩游戏4g计算机的内存不足,玩游戏时出现存储空间不足, 无法完成此操作, 到底是何原因?...

游戏是Just Cause 2(即《正当防卫2》, 对不&#xff1f;这款游戏需要很高的硬件配置&#xff0c;显卡必须在DirectX10以上才行;你的是什么显卡&#xff1f;请确保安装了最新的.NET和DX10&#xff1b;另我搜索到下面的解决方法&#xff0c;仅供参考&#xff1a;解决方法&#xf…

win10安装opcenum_Win10提示Windows无法安装到GPT分区形式磁盘

Win10系统提示Windows无法安装到GPT分区形式磁盘该怎么办&#xff1f;最近有用户反映说在安装Win10原版系统的时候&#xff0c;采用的是U盘安装Win10的方法&#xff0c;到磁盘选择这一项的时候&#xff0c;选中C盘不能安装&#xff0c;提示&#xff1a;Windows无法安装到这个磁…

JPA 2 | EntityManagers,事务及其周围的一切

介绍 对我来说&#xff0c;最令人困惑和不清楚的事情之一是&#xff0c;作为Java开发人员&#xff0c;一直是围绕事务管理的谜团&#xff0c;尤其是JPA如何处理事务管理。 事务什么时候开始&#xff0c;什么时候结束&#xff0c;实体的持久化方式&#xff0c;持久性上下文等等。…

JavaScript高级特征之面向对象笔记

Javascript面向对象&#xff1a;函数&#xff1a; * Arguments对象&#xff1a; * Arguments对象是数组对象 * Arguments对象的length属性可以获取参数的个数 * 利用Arguments对象模拟函数的重载效果&#xff08;javascript中不存在函…

Object.prototype.hasOwnProperty与Object.getOwnPropertyNames

Object.prototype.hasOwnProperty() 所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性&#xff1b;和 in 运算符不同&#xff0c;该方法会忽略掉那些从原型链上继承到的属性。 使用 hasOwnProperty 方法判断属自身…

IE9真的支持CSS3和HTML5?

微软昨天在其2009年专业开发者大会上展示 了下一个版本的Internet Explorer浏览器IE9。 尽管只是一个早期版本&#xff0c;IE开发团队还是比较高调的宣布了IE9的一些改 进&#xff0c;比如速度比之前的IE版本都更快些&#xff0c;缩小与FF和webkit之间的差距(也就是还是赶不上了…

绘图用计算机软件的基本种类有,主编教您电脑绘图软件有哪些

绘图软件是指专业人员根据一定准则设计的用于计算机绘图软件程序&#xff0c;种类非常多&#xff0c;通过它们可以满足足广大用户的基本绘图要求。下面&#xff0c;我就给大家介绍电脑绘图软件有哪些。电脑是根据指令进行高速计算的电子设备&#xff0c;功能强大&#xff0c;时…

python安装math库_Python-math库

导入函数import mathe#表示一个常量>>> math.e2.718281828459045exp#返回math.e,也就是2.71828的x次方exp(x)>>> math.exp(1)2.718281828459045>>> math.exp(2)7.38905609893065>>> math.exp(3)20.085536923187668pi#数字常量&#xff0c;…

使用Encog,ROME,JSoup和Google Guava进行博客分类

继续使用Programming Collection Intelligence &#xff08;PCI&#xff09;&#xff0c;下一个练习是使用距离得分根据相关博客中使用的单词确定博客列表。 我已经找到Encog作为AI /机器学习算法的框架&#xff0c;为此&#xff0c;我需要一个RSS阅读器和一个HTML解析器。 我…

HTML浮动导致高度塌陷,HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法(高度欺骗)...

元素浮动定义float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像&#xff0c;使文本围绕在图像周围&#xff0c;不过在 CSS 中&#xff0c;任何元素都可以浮动。浮动元素会生成一个块级框&#xff0c;而不论它本身是何种元素。如果浮动非替换元素&#xff0c;则要指定…

Python API简单验证

前言 因为CMDB内部的需求&#xff0c;需要一个API进行数据传输&#xff0c;用来传递需要抓取的服务端信息信息给抓取的autoclient&#xff0c;autoclient抓取好之后再通过API传输到服务器&#xff0c;保存到数据库。但是为了防止恶意的API访问&#xff0c;需要做一个验证。 设想…