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. ubuntu16.04搭建LAMP(独立安装)

    修改APT源 备份原文件source.list sudo cp /etc/source.list /etc/source.list.bak 修改source.list sudo vi /etc/sou ...

  2. CSP2020 游记

    Day -28 后天就初赛了,考了一套模拟题,自闭,心态爆炸,感觉退役不远了 Day -26(初赛) 香农是谁??? 手写随机nth_element与O(n)的哈希表??? 阅读程序T2时间复杂度分析 ...

  3. 网络系列之 cookie增删改查(封装)

    什么是cookie 呢?简单来说,这个小东西,会记录你的 浏览器 浏览习惯,或 账号密码等, 以便于提高用户的体验感. 举个例子: 你们有没有发现,去淘宝一些购物网站, 你搜索了 椅子, 挑选了一会椅 ...

  4. 【基于Puppeteer前端自动化框架】【二】PO模式,断言(如何更简便逻辑的写测试代码)

    一.概要 前面介绍了Puppeteer+jest+TypeScript做UI自动化,但是这知识基础的,我们实现自动化要考虑的很多,比如PO模式,比如配置文件,比如断言等等.下面就来一一实现我是怎么用p ...

  5. python批量爬取猫咪图片

    不多说直接上代码 首先需要安装需要的库,安装命令如下 pip install BeautifulSoup pip install requests pip install urllib pip ins ...

  6. ResHacker 用命令行方式修改 windows PE文件版本号

    由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集 ...

  7. Prometheus+Grafana+Alertmanager实现告警推送教程 ----- 图文详解

    前言 本文主要介绍的是Prometheus采集数据,通过Grafana加上PromQL语句实现数据可视化以及通过Alertmanage实现告警推送功能.温馨提示,本篇文章特长,2w多的文字加上几十张图 ...

  8. guava中的SettableFuture分析

    当缓存中没有要找的数据时,则要从数据库中去查询,而当并发量比较大时可能会击穿数据库,所以guava cache对同一值的查询做了合并请求的处理.其中就用到了SettableFuture,类似一把锁,只 ...

  9. Alpha冲刺-第七次冲刺笔记

    Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...

  10. CPU:网卡老哥,你到底怎么工作的?

    阿Q造访 我是一个网卡,居住在一个机箱内的主板上,负责整台计算机的网络通信,要是没有我,这里就成了一个信息孤岛了,那也太无聊了- 上个周末,服务器断电维护了,这是我难得的休息时间,我准备打个盹儿眯一会 ...