Spring MVC的表单标签库详解

2023-11-02

表单标签库中包含了可以用在 JSP 页面中渲染 HTML 元素的标签。在 JSP 页面使用 Spring 表单标签库时,必须在 JSP 页面开头处声明 taglib 指令,指令代码如下:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

在表单标签库中有 form、input、password、hidden、textarea、checkbox、checkboxes、radiobuttton、radiobuttons、select、option、options、errors 等标签。
在这里插入图片描述

表单标签

表单标签的语法格式如下:

<form:form modelAttribute="xxx" method="post" action="xxx">
    ...
</form:form>

表单标签除了具有 HTML 表单元素属性以外,还具有 acceptCharset、commandName、cssClass、cssStyle、htmlEscape 和 modelAttribute 等属性。

  • acceptCharset:定义服务器接受的字符编码列表。
  • commandName:暴露表单对象的模型属性名称,默认为 command。
  • cssClass:定义应用到 form 元素的 CSS 类。
  • cssStyle:定义应用到 form 元素的 CSS 样式。
  • htmlEscape:true 或 false,表示是否进行 HTML 转义。
  • modelAttribute:暴露 form backing object 的模型属性名称,默认为 command。

其中,commandName 和 modelAttribute 属性的功能基本一致,属性值绑定一个 JavaBean 对象。假设控制器类 UserController 的方法 inputUser 是返回 userAdd.jsp 的请求处理方法,inputUser 方法的代码如下:

@RequestMapping(value="/input")
public String inputUser(Model model) {
    ...
    model.addAttribute("user", new User());
    return "userAdd";
}

userAdd.jsp 的表单标签代码如下:

<form:form modelAttribute="user" method="post" action="user/save">
    ...
</form:form>

注意:在 inputUser 方法中,如果没有 Model 属性 user,userAdd.jsp 页面就会抛出异常,因为表单标签无法找到在其 modelAttribute 属性中指定的 form backing object。

input 标签

input 标签的语法格式如下:

<form:input path="xxx"/>

该标签除了有 cssClass、cssStyle、htmlEscape 属性以外,还有一个最重要的属性——path。path 属性将文本框输入值绑定到 form backing object 的一个属性。示例代码如下:

<form:form modelAttribute="user" method="post" action="user/save">
    <form:input path="userName"/>
</form:form>

上述代码将输入值绑定到 user 对象的 userName 属性。

password 标签

password 标签的语法格式如下:

<form:password path="xxx"/>

该标签与 input 标签的用法完全一致,这里不再赘述。

hidden 标签

hidden 标签的语法格式如下:

<form:hidden path="xxx"/>

该标签与 input 标签的用法基本一致,只不过它不可显示,不支持 cssClass 和 cssStyle 属性。

textarea 标签

textarea 基本上就是一个支持多行输入的 input 元素,语法格式如下:

<form:textarea path="xxx"/>

该标签与 input 标签的用法完全一致,这里不再赘述。

checkbox 标签

checkbox 标签的语法格式如下:

<form:checkbox path="xxx" value="xxx"/>

多个 path 相同的 checkbox 标签,它们是一个选项组,允许多选,选项值绑定到一个数组属性。示例代码如下:

<form:checkbox path="friends" value="张三"/>张三
<form:checkbox path="friends" value="李四"/>李四
<form:checkbox path="friends" value="王五"/>王五
<form:checkbox path="friends" value="赵六"/>赵六

上述示例代码中复选框的值绑定到一个字符串数组属性 friends(String[] friends)。该标签的其他用法与 input 标签基本一致,这里不再赘述。

checkboxes 标签

checkboxes 标签渲染多个复选框,是一个选项组,等价于多个 path 相同的 checkbox 标签。它有 3 个非常重要的属性,即 items、itemLabel 和 itemValue。

  • items:用于生成 input 元素的 Collection、Map 或 Array。
  • itemLabel:items 属性中指定的集合对象的属性,为每个 input 元素提供 label。
  • itemValue:items 属性中指定的集合对象的属性,为每个 input 元素提供 value。

checkboxes 标签的语法格式如下:

<form:checkboxes items="xxx" path="xxx"/>

示例代码如下:

 <form:checkboxes items="${hobbys}" path="hobby"/>

上述示例代码是将 model 属性 hobbys 的内容(集合元素)渲染为复选框。在 itemLabel 和 itemValue 省略的情况下,如果集合是数组,复选框的 label 和 value 相同;如果是 Map 集合,复选框的 label 是 Map 的值(value),复选框的 value 是 Map 的关键字(key)。

radiobutton 标签

radiobutton 标签的语法格式如下:

<form:radiobutton path="xxx" value="xxx"/>

多个 path 相同的 radiobutton 标签,它们是一个选项组,只允许单选。

radiobuttons 标签

radiobuttons 标签渲染多个 radio,是一个选项组,等价于多个 path 相同的 radiobutton 标签。radiobuttons 标签的语法格式如一下:

<form:radiobuttons items="xxx" path="xxx"/>

该标签的 itemLabel 和 itemValue 属性与 checkboxes 标签的 itemLabel 和 itemValue 属性完全一样,但只允许单选。

select 标签

select 标签的选项可能来自其属性 items 指定的集合,或者来自一个嵌套的 option 标签或 options 标签。其语法格式如下:

<form:select path="xxx" items="xxx"/>

<form:select path="xxx" items="xxx">
    <option value="xxx">xxx</option>
</form:select>

<form:select path="xxx">
    <form:options items="xxx"/>
</form:select>

该标签的 itemLabel 和 itemValue 属性与 checkboxes 标签的 itemLabel 和 itemValue 属性完全一样。

options 标签

options 标签生成一个 select 标签的选项列表,因此需要和 select 标签一同使用,具体用法参见“select标签”。

errors 标签

errors 标签渲染一个或者多个 span 元素,每个 span 元素包含一个错误消息。它可以用于显示一个特定的错误消息,也可以显示所有错误消息。其语法格式如下:

<form:errors path="*"/><form:errors path="xxx"/>

其中,“*”表示显示所有错误消息;“xxx”表示显示由“xxx”指定的特定错误消息。

内容出处http://c.biancheng.net/view/4420.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC的表单标签库详解 的相关文章

  • 93个springboot计算机毕业设计程序汇总大全,毕设练手必备。

    在选择计算机毕业设计题目和项目的时候 你是否曾经感到迷茫和犹豫不决 你知道怎样的项目才是既具有不重复性又能成功的吗 今天 我们将给即将毕业的同学分享一些毕业设计项目 希望对你的毕业设计有所帮助 一 成品列表 以下所有springboot框架
  • TensorFlow入门 - 变量(Variables)

    训练模型时 需要使用变量 Variables 保存和更新参数 Variables是包含张量 tensor 的内存缓冲 变量必须要先被初始化 initialize 而且可以在训练时和训练后保存 save 到磁盘中 之后可以再恢复 restor
  • 科普:PCI-E插槽都有哪些样子?

    主板上的扩展插槽曾经是多种多样的 例如曾经非常流行的组合就是PCI插槽搭配AGP插槽 其中AGP插槽主要用在显卡上 而PCI插槽的用途则更广一些 不仅有用在显卡上 还能用于扩展其它设备 如网卡 声卡 调制解调器等等 这两种插槽曾经共同为广大
  • RSYNC介绍 、备份、自动备份 脚本编写

    RSYNC 简介 rsync 是一个远程同步 是一个开源的快速安全高效的异地备份工具 可以在不同的主机之间镜像同步整个目录树 支持增量备份 有保持链接和权限功能 且采用优化的同步算法 传输前执行压缩 因此非常适合异地备份 镜像服务等应用 也
  • linux虚拟机开放端口号,虚拟机centos7开放端口

    1 先查看防火墙是否开启的状态 以及开放端口的情况 systemctl status firewalld service 查看防火墙开启还是关闭 sudo firewall cmd list all 可以查看端口开放情况 firewall
  • 超简单制作多系统启动U盘教程

    超简单制作多系统启动U盘教程 文章目录 超简单制作多系统启动U盘教程 前言 基本配置 配置PE系统 配置其他操作系统 前言 这两天心血来潮 本来想用Win to go做一个windows便携系统 B站教程无意间发现Ventoy软件 可谓功能
  • 套接字多种可选项

    Windows平台 WSADATA wsaData int iResult WSAStartup MAKEWORD 2 2 wsaData if iResult NO ERROR printf Error at WSAStartup n C
  • 虚拟机centos6.4网络连接设置--桥接设置

    Windows 本机虚拟网卡设置 虚拟机安装完成之后 在 本机网络设置里面出现 两个网卡VMware Network Adapter VMnet1和VMware Network Adapter Vmnet8 联网用Vmnet8 设置连接网络
  • PHP Smarty如何进行调试和错误处理?

    欢迎来到PHP Smarty的世界 如果你在这里寻求如何调试和错误处理的方法 那么我可以向你保证 我们会让这个过程尽可能的有趣和轻松 首先 让我们先来谈谈调试 在Smarty中 你可以使用以下几种方法来进行调试 使用Smarty的debug
  • Centos7 安装MongoDB5

    1 mongodb安装 MongoDB的下载网址 Download MongoDB Community Server MongoDB 下载完安装包之后上传到系统 然后解压 tar xf mongodb linux x86 64 rhel80
  • 灰色预测GM(1,1)代码

    目录 1 一项初始序列X0 2 累加序列 生成新序列 3 紧邻均值生成序列 4 求相关参数 5 由第四步求出参数 6 生成预测模型 7 累减还原 得原始数列的灰色预测值 8 模型检验 9 可视化 结果分析 1 一项初始序列X0 import
  • 数据库事务

    事务 TRANSACTION 是作为单个逻辑工作单元执行的一系列操作 这些操作作为一个整体一起向 系统提交 要么都执行 要么都不执行 事务是一个不可分割的工作逻辑单元 事务必须具备以下四个属性 简称 ACID 属性 原子性 Atomicit
  • 解决Could not connect to Redis at 39.101.74.81:6379: ConnectinectionException: Failed to create socket

    1 修改redis conf文件 1 注释掉原先的 bind 127 0 0 1 2 将protected mode yes 修改为no 2 查看是否开启6379端口号 firewall cmd list ports 没开启的话开启 fir
  • 从DB Browser for SQLite导出.csv文件

    如何从 db数据库文件中导出某个表的 csv文件 一般的 后台收集的日志保存在数据库中 查找日志时候需要打开 db文件的数据库 使用DB Browser for SQLite这个软件可以打开和查看数据库表以及数据 使用DB Browser
  • Golang笔记:使用ssh包作为客户端与SSH服务器交互

    文章目录 目的 基础说明 使用演示 单次通讯 连续通讯 远程终端 总结 目的 Golang中可以使用 golang org x crypto ssh 包作为SSH客户端或者SSH服务使用 这篇文章将简单记录下作为客户端使用的一些内容 Pac
  • form表单的提交

    基于html 语言的form表单的提交 1 表单属性设置 标签 表示表单标签 定义整体的表单区域 action属性 设置表单数据提交地址 method属性 设置表单提交的方式 一般有 GET 方式和 POST 方式 不区分大小写 2 表单元
  • Ubuntu中Tango Control的Pogo无法加载的解决办法

    文章目录 环境 步骤 卸载java ubuntu 安装指定版本jdk 重新编译测试 参考 在 自定义Tango Control设备服务在Ubuntu中的测试 中发现 pogo经常出现加载不出来的情况 但是偶尔会有一次可以打开 https b
  • Python:回文日期问题

    每日一题 目录 每日一题 文章目录 前言 一 题目描述 二 输入描述 三 输出描述 1 引入库 2 执行结果 datetime模块的用法 flag的用法 replace 方法 参数 总结 前言 本文章重点讲述回文日期问题 在其中介绍用到的函

随机推荐

  • C语言钟表【改进版】

    改进版源代码 include
  • 边缘计算物联网网关在机械加工行业中的效用分享

    随着工业4 0的推进 物联网技术正在逐渐渗透到各个行业领域 机械加工行业作为制造业的基础领域之一 其生产过程的自动化 智能化水平直接影响到产品质量和生产效率 边缘计算物联网网关作为物联网技术的重要组成部分 在机械加工行业中发挥着越来越重要的
  • Webpack4.0 的相关优化配置

    所谓的优化 也就是引入一些插件 使得代码的体积变小 1 删除没有意义的样式 在css文件中有一些没有用到的样式 希望在打包的过程中 删除掉它们 安装两个插件 cnpm install purgecss webpack plugin glob
  • 深度理解取整&取余&取模运算

    在编程的学习当中 我们会经常行的使用这些操作在表达式计算 但是你在使用当中 你真的理解了吗 或者说是你完全学会使用了 在这篇博客当中 或许会出现错误 希望大家理解 目前还在学习当中 发现错误或不足之处请大家斧正 目录 一 取整 二 取余与取
  • 64位win7下安装MongoDB以zip包的形式 图文(超详细)

    首先从mongodb的官网上下载对应版本的zip包 如果你使用Windows 64 bit 2008 R2 或win7需要安装Hotfix补丁 读者可以去网上下载相应的版本 解压后会得到如下的一个目录 然后自己在某个录下下建好一个目录 我这
  • window.open (‘page.html‘)

    window open page html 用于控制弹出新的窗口
  • 2024王道408数据结构 P143 T8

    2024王道408数据结构 P143 T8 思考过程 首先题目的意思非常简单明了 就是让我们找二叉树中度为2的结点 也就是既有左子树又有右子树的结点 那我们只需要在代码里判断如果该结点有左子树就入队 同时如果该结点有右子树就计数器 1 并且
  • vi/vim基本使用命令

    转自 http www lupaworld com uid 296380 action viewspace itemid 118973 vi vim 基本使用方法 本文介绍了vi vim 的基本使用方法 但对于普通用户来说基本上够了 i v
  • QT+VS配置及调试

    QT下载 https download qt io archive qt QT Creator设置 打开 Qt Creator 进入编译器部分 工具 gt 选项 gt 构建和运行 gt 编译器 可以看到vs的内容 之后 进入 工具 gt 选
  • Android平台GB28181接入端如何对接UVC摄像头?

    我们在对接Android平台GB28181接入的时候 有公司提出这样的需求 除了采集执法记录仪摄像头自带的数据外 还想通过执法记录仪采集外接UVC摄像头 实际上 这块对我们来说有点炒冷饭了 不算新的诉求 大牛直播SDK 在2016年对接RT
  • 2023国庆节放假通知

    喜迎国庆 放假通知 公司相关各部门 国庆来临之际 根据国家有关规定 现将2023年国庆放假事项通知如下 1 9月29至10月6日放假调休 共8天 10月7日上班 10月8日上班 2 各部门接通知后 妥善安排好值班工作 并将各部门值班表于20
  • 500套优秀简历模板,送给您!

    点击上方 成猿之路 选择 置顶公众号 第一时间送达实用技术干货 最近收藏保存了一些简历模板 觉得不错 送给即将步入社会或需要简历模板的你 01单面简历 150款 02多页简历 95款 03表格简历 18款 04英文简历 27款 05艺术气质
  • pytorch: 数据增广(Data Augmentation)

    常用的数据增广方法 比例缩放 位置截取 翻转 旋转 亮度 对比度和色调的变化 读取原图 import torchvision transforms as transforms from PIL import Image img Image
  • Vue.js如何实现倒计时?颜小白实测可用!

    Vue JS如何实现倒计时功能 1 首先一般来说前端小伙伴们会收到后端同学传过来的一个结束时间 大部分需要倒计时得情况都是在详情页 比如商品 活动等一些场景 2 如果需要实现倒计时功能 首先我们需要知道如何计算剩余时间 首先我们会拿到后端传
  • jdbctemplate 执行多条sql_SpringBoot使用JdbcTemplate连接Mysql实现增删改查

    摘要 本文是springboot工程使用JdbcTemplate连接Mysql数据库 实现增删改查的实例 及在搭建过程中碰到的几个问题 前几篇介绍怎么搭建SpringBoot工程 接下来直接入正题 什么是JDBC JDBC Java Dat
  • HDFS RPC限流方案实践探索

    文章目录 前言 HDFS RPC限流方案 分级RPC queue的调参 分级RPC queue的insight 前言 在前面的一篇关于分布式集群下的限流方案文章里 笔者阐述了一种在HDFS集群里的RPC限流架构 其间也提到了很多关于分布式限
  • Ubuntu连接不上网络问题的解决方法

    这学期经常要用虚拟机做实验 但经常在某一次开机后网络连接不上 查过很多解决方法 每次奏效的方法又都不一样 这里记录一下 省的下次一个一个找了 第一次写博客 有点点小激动嘿嘿 以下方法都是在NAT模式下的连接 方法一 还原默认设置 将虚拟机关
  • 20个基本电路图讲解_记住这些规则,再看电路图就不会乱了!

    在我们进行电子DIY制作时 看图是难免的 但对于很多新手来说 刚开始似乎总有种很乱的感觉 走过来后我们才知道 当时只是没有了解这些规则 今天小编以电子电路图为主要示例进行总结一下 电路图走向 是指电路图中各部分电路 从最初的输入端到最终的输
  • 【数据结构】 二叉树面试题讲解->叁

    文章目录 引言 根据二叉树创建字符串 https leetcode cn problems construct string from binary tree submissions 题目描述 示例 示例一 示例二 思路解析 代码完整实现
  • Spring MVC的表单标签库详解

    表单标签库中包含了可以用在 JSP 页面中渲染 HTML 元素的标签 在 JSP 页面使用 Spring 表单标签库时 必须在 JSP 页面开头处声明 taglib 指令 指令代码如下 在表单标签库中有 form input passwor