springmvc中可以使用表单标签库,支持数据绑定,用来将用户输入绑定到领域模型。

例子来源《Servlet、JSP和SpringMVC学习指南》

项目代码

关键代码及说明

bean对象类代码

public class Book implements Serializable {
private static final long serialVersionUID = 1520961851058396786L;
private long id;
private String isbn;
private String title;
private Category category;
private String author; public Book() {
} public Book(long id, String isbn, String title, Category category, String author) {
this.id = id;
this.isbn = isbn;
this.title = title;
this.category = category;
this.author = author;
}
// get and set methods not shown
} public class Category implements Serializable {
private static final long serialVersionUID = 5658716793957904104L;
private int id;
private String name; public Category() {
} public Category(int id, String name) {
this.id = id;
this.name = name;
}
// get and set methods not shown
}

Controller中的代码,需要在Model中添加绑定的对象

@RequestMapping(value = "/book_input")
public String inputBook(Model model) {
List<Category> categories = bookService.getAllCategories();
model.addAttribute("categories", categories);
model.addAttribute("book", new Book());
return "BookAddForm";
}
@RequestMapping(value = "/book_save")
public String saveBook(@ModelAttribute Book book) {
Category category =
bookService.getCategory(book.getCategory().getId());
book.setCategory(category);
bookService.save(book);
return "redirect:/book_list";
}

jsp中代码,使用表单标签

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>Add Book Form</title>
</head>
<body>
<div id="global">
<!--commandName定义了模型属性的名称,其中包含了一个backing object,其属性将用于填充所生成的表单。如果该属性存在,则必须在返回包含该表单的视图的请求处理方法中添加相应的模型属性-->
<form:form commandName="book" action="book_save" method="post">
<fieldset>
<legend>Add a book</legend>
<p>
<label for="category">Category: </label>
<!--标签也可以绑定到嵌套对象的属-->
<!--绑定book.category.id-->
<!--items指定select的可选值来自model中的categories集合-->
<!--itemLabel指定集合中对象的某个属性为每个input元素提供label-->
<!--itemValue指定集合中对象的某个属性为每个input元素提供值-->
<form:select path="category.id" items="${categories}" itemLabel="name" itemValue="id"/>
</p>
<p>
<!-- path指定输入字段绑定到formbacking object的一个属性-->
<!--绑定book.title-->
<label for="title">Title: </label>
<form:input id="title" path="title"/>
</p>
<p>
<!--绑定book.author-->
<label for="author">Author: </label>
<form:input id="author" path="author"/>
</p>
<p>
<!--绑定book.isbn-->
<label for="isbn">ISBN: </label>
<form:input id="isbn" path="isbn"/>
</p>
<p id="buttons">
<input id="reset" type="reset" tabindex="4">
<input id="submit" type="submit" tabindex="5"
value="Add Book">
</p>
</fieldset>
</form:form>
</div>
</body>
</html>

表单标签库中包含了可以用在JSP页面中渲染HTML元素的标签。为了使用这些标签,必须在JSP页面的开头处声明这个taglib指令:<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>,form标签用于渲染HTML表单。form标签必须利用渲染表单输入字段的其他任意标签。commandName属性或许是其中最重要的属性,因为它定义了模型属性的名称,其中包含了一个backingobject,其属性将用于填充所生成的表单。如果该属性存在,则必须在返回包含该表单的视图的请求处理方法中添加相应的模型属性。在该例子中,book_input请求的处理方法中,会在Model中添加要绑定的对象,然后在BookAddForm.jsp中通过commandName绑定该对象。其他输入标签中的path指定了要与其绑定的对象属性。

springmvc表单标签库的使用的更多相关文章

  1. SpringMvc表单标签库

    HTML密码框 <td><form:label path="password">密码:</form:label></td><t ...

  2. 关于Spring MVC中的表单标签库的使用

    普通的MVC设计模式中M代表模型层,V代表视图层,C代表控制器,SpringMVC是一个典型的MVC设置模式的框架,对于视图和控制器的优化很多,其中就有与控制器相结合的JSP的表单标签库. 我们先简单 ...

  3. (转载)SPRINGMVC表单标签简介

    SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...

  4. SpringMVC表单标签简介

    在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需 ...

  5. Spring MVC 数据绑定和表单标签库

    数据绑定是将用户输入绑定到领域模型的一种特性.作用是将 POJO 对象的属性值与表单组件的内容绑定. 数据绑定的好处: 1. 类型总是为 String 的 HTTP 请求参数,可用于填充不同类型的对象 ...

  6. SpringMVC听课笔记(SpringMVC 表单标签 & 处理静态资源)

    1.springmvc表单标签,可以快速开发,表单回显,但是感触不深 2.静态资源的获取,主要是要配置这个

  7. SpringMVC 表单标签 & 处理静态资源

    使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...

  8. SpringMVC 表单标签

    引入标签库 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" ...

  9. SpringMVC表单标签

    SpringMVC学习系列(11) 之 表单标签   本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. ...

随机推荐

  1. 深度分析:java8的新特性lambda和stream流,看完你学会了吗?

    1. lambda表达式 1.1 什么是lambda 以java为例,可以对一个java变量赋一个值,比如int a = 1,而对于一个方法,一块代码也是赋予给一个变量的,对于这块代码,或者说被赋给变 ...

  2. 有什么好用的Mac数据恢复软件

    对于第一次上手苹果电脑的人来说,使用起来难免有点小难受,因为对苹果电脑操作系统不熟练,发生误删数据的事情也是屡见不鲜. 那么对于这种情况我们该怎么办呢?不用担心,今天小编就为大家推荐一款好用的苹果数据 ...

  3. 在Jenkins的帮助下让我们的应用CI与CD

    上图三位大家应该很熟悉吧,借助这三者可以让我们的服务在Linux环境下持续集成.容器中持续部署. 本篇博客的项目是core webapi, .NET 5.0 在11号已经正式发布了,你们的项目都升级了 ...

  4. 免费AWS云服务器一键搭建Trojan详细教程

    前言 想要撸AWS服务器的可以看我上一篇博客,这里就不介绍了,以下步骤有问题的朋友可以私信或者评论区留言. 配置AWS云服务器 选择语言,博主写了博客后才看到,前面都是使用谷歌翻译. 选择地区 创建虚 ...

  5. 为什么不用UUID做主键?

    不易于存储:UUID太长,16字节128位,通常以36长度的字符串表示,很多场景不适用. 信息不安全:基于MAC地址生成UUID的算法可能会造成MAC地址泄露,这个漏洞曾被用于寻找梅丽莎病毒的制作者位 ...

  6. VisualStudio 编写汇编代码相关设置

    VS编写汇编代码方法 新建空项目,不创建解决方案 项目右键,Build Customizations,选择masm 新建源文件,后缀为.ASM 编写代码 .386 ; Tells MASM to us ...

  7. Linux下的MediaWiki的部署启动遇到的问题与解决方案

    1. MySQL安装不成功 解决方案:https://bbs.csdn.net/topics/394377536 2. no space left on device ubuntu 解决方案:http ...

  8. fist-第三天冲刺随笔

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...

  9. 详解Hadoop3.x新特性功能-HDFS纠删码

    文章首发于微信公众号:五分钟学大数据 EC介绍 ​Erasure Coding 简称EC,中文名:纠删码 EC(纠删码)是一种编码技术,在HDFS之前,这种编码技术在廉价磁盘冗余阵列(RAID)中应用 ...

  10. 大数据开发——Hive笔记

    写在前面 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.Hive的运行原理- ...