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,一经查实,立即删除!

相关文章

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标…

记录合规性–关于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个测…

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

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

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

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

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

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

Python API简单验证

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

前端js编码

1、首先是encodeURI和encodeURIComponent&#xff1b; 从名字可以清晰的看出他两都是主要用于url编码的&#xff0c;那之间有什么区别呢&#xff1f;唯一区别就是编码的字符范围&#xff0c;其中 encodeURI方法不会对下列字符编码 ASCII字母、数字、~!#$&*():/,;?&#x…

Python中 sys.argv[]的用法简明解释

Python中 sys.argv[]的用法简明解释 因为是看书自学的python,开始后不久就遇到了这个引入的模块函数&#xff0c;且一直在IDLE上编辑了后运行&#xff0c;试图从结果发现它的用途&#xff0c;然而结果一直都是没结果&#xff0c;也在网上查了许多&#xff0c;但发现这个问题的比…

文件上传漏洞及其绕过、对策、过狗

1. 文件包含上传&#xff1a; php://input属于php内置的封装协议&#xff0c;其实都主要是include&#xff08;&#xff09;函数处理不当如果有文件是以下写法&#xff0c;xxx随便&#xff1a;<?phpinclude($_GET[xxx]);?> 以上保存到test.php&#xff0c; 我们访问ht…

一维二维_更高效的一维、二维材料过渡态搜索

前言本文中&#xff0c;我们首先介绍如何使用NEB方法搜索过渡态&#xff0c;以及在NEB的结果的基础上&#xff0c;进一步提高精度优化出高精度、可验证的过渡态。本文以MoS2的一维条带(其中一个Mo原子被Co替代掺杂)为例进行演示。一般来说&#xff0c;这种反应&#xff0c;周期…

Mybatis之逆向工程

前面几篇基本把mybatis简单使用学习了下,今天学习下mybatis逆向工程&#xff0c;我们在开发中经常需要先设计数据库表结构或者先设计model,那就是能不能有工具可以只需在一边设计之后另一边自动生成呢&#xff1f;于是逆向工程来了。这里的逆向功能是通过数据库的表生成java po…

2023航天推进理论基础考试划重点(W老师)-液体火箭发动机1

适用于期末周求生欲满满的西北工业大学学生。 1、液体火箭发动机的基本组成及功能是什么&#xff1f; 推力室组件、推进剂供应系统、阀门与调节器、发动机总装元件等组成。 2、液体火箭发动机的分类和应用是什么&#xff1f;3、液体火箭发动机系统、分系统的概念是什么&…

Java EE 7是最终版本。 思想,见解和进一步的指针。

我们花了不到三年的时间才推出了下一个Java EE版本 。 今年4月16日&#xff0c; JCP EC对JSR 342进行了投票并获得批准。 这是一个成功的故事&#xff0c;因为在去年八月下旬的最后时刻撤消了拥有云就绪平台的最初想法。 作为EG的成员&#xff0c;撰写即将发布的功能或多或少容…

dbgrideh指定某单元格变色_一招搞定按指定名称批量新建文件夹

文 / 雷哥小鱼儿 编辑 / 小瓜子假如你有一个100行的Excel名单文件。业务需要&#xff0c;需要按姓名单独做成一个个文件夹。普通小白做法&#xff1a;用复制粘贴大法一个个去修改文件夹名字........雷哥Tips&#xff1a;EXCEL中为了实现某目标&#xff0c;出现了N次重复的操作…

如何编写自己的Java / Scala调试器

通过这篇文章&#xff0c;我们将探讨Java / Scala调试器的编写和工作方式。 诸如Windows的WinDbg或Linux / Unix的gdb之类的本机调试器通过操作系统直接提供给它们的钩子来获取其强大功能&#xff0c;以监视和操纵外部进程的状态。 JVM充当OS之上的抽象层&#xff0c;它提供了自…

软件测试bug文档模板,软件bug测试记录模板

软件bug测试记录模板 XXX软件bug测试记录表 文档编号&#xff1a; 背景信息 项目名称 测试目的 硬件环境 软件环境 测试时间 测试人员 测试说明 1、严重等级&#xff1a; A-Crash(崩溃的)&#xff1a;由于程序所引起的死机、非法退出、死循环&#xff1b;数据库发生死锁&#x…

Java即时编译:不仅仅是一个流行词

最近的Java生产性能问题迫使我重新审视并真正欣赏Java VM即时&#xff08;JIT&#xff09;编译器。 大多数Java开发人员和支持人员都听说过这种JVM运行时性能优化&#xff0c;但是有多少人真正理解并欣赏它的好处&#xff1f; 本文将与您分享在添加新的虚拟服务器&#xff08…