软件开发实训(720实训)——第四课:数据绑定和表单标签库

内容关键词:表单标签库中的标签及其属性

授课老师:720科技张森鹏


一、知识笔记

5.1 表单标签库中的标签

标签 描述
form 渲染表单元素
input 渲染<input type="text"/>元素
password 渲染<input type="password"/>元素
hidden 渲染<input type="hidden"/>元素
textarea 渲染 textarea 元素
checkbox 渲染一个<input type="checkbox"/>元素
checkboxes 渲染多个<input type="checkbox"/>元素
radiobutton 渲染一个<input type="radio"/>元素
radiobuttons 渲染多个<input type="radio"/>元素
select 渲染一个选择元素
option 渲染一个可选元素
options 渲染一个可选元素列表
errors span 元素中渲染字段错误
5.2 表单标签的属性
属性 描述
acceptCharset 定义服务器接受的字符编码列表
commandName 暴露表单对象之模型属性的名称,默认为 command
cssClass 定义要应用到被渲染 form 元素的 CSS
cssStyle 定义要应用到被渲染 form 元素的 CSS 样式
htmlEscape 接受 true 或者 false,表示被渲染的值是否应该进行 HTML 转义
modelAttribute 暴露表单支持对象的模型属性名称,默认为 command
5.3 input 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖
cssClass 属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义
path 要绑定的属性路径
5.4 password 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义
path 要绑定的属性路径
showPassword 表示应该显示或遮盖密码,默认值为 false
5.5 hidden 标签的属性
属性 描述
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义
path 要绑定的属性路径
5.6 textarea 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义
path 要绑定的属性路径
5.7 checkbox 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
label 要作为标签用于被渲染复选框的值
path 要绑定的属性路径

5.8 radiobutton 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
label 要作为标签用于被渲染复选框的值
path 要绑定的属性路径
5.9 checkboxes 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
delimiter 定义两个 input 元素之间的分隔符,默认没有分隔符
element 给每个被渲染的 input 元素都定义一个 HTML 元素,默认为“span
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
items 用于生成 input 元素的对象的 CollectionMap 或者 Array
itemLabel item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供值
path 要绑定的属性路径
5.10 radiobuttons 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
delimiter 定义两个 input 元素之间的分隔符,默认没有分隔符
element 给每一个被渲染的 input 元素都定义一个 HTML 元素,默认为“span
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
items 用于生成 input 元素的对象的 CollectionMap 或者 Array
itemLabel item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供值
path 要绑定的属性路径
5.11 select 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
items 用于生成 input 元素的对象的 CollectionMap 或者 Array
itemLabel item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供值
path 要绑定的属性路径
5.12 option 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义

5.13 options 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
items 用于生成 input 元素的对象的 CollectionMap 或者 Array
itemLabel item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 CollectionMap 或者 Array 中的对象属性,为每个 input 元素提供值

5.14 errors 标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
属性 描述
Delimiter 分隔多个错误消息的分隔符
element 定义一个包含错误消息的 HTML 元素
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
path 要绑定的错误对象路径

二、重要记录

 清单 5.1 Book
package domain;
import java.math.BigDecimal;
import java.io.Serializable;
public class Book implements Serializable {
private static final long serialVersionUID = 1L

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, BigDecimal price) {
this.id = id;
this.isbn = isbn;
this.title = title;
this.category = category;
this.author = author;
this.price = price;
}
// get and set methods not shown
}
清单 5.2 Category
package domain;
import java.io.Serializable;
public class Category implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
public Category() {
}
public Category(int id, String name) {

5.3 数据绑定范例
83
this.id = id;
this.name = name;
}
// get and set methods not shown

}

清单 5.3 BookController
package controller;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import domain.Book;
import domain.Category;
import service.BookService;
@Controller
public class BookController {
@Autowired
private BookService bookService;
private static final Log logger =
LogFactory.getLog(BookController.class);
@RequestMapping(value = "/input-book ")
public String inputBook(Model model) {
List<Category> categories = bookService.getAllCategories();
model.addAttribute("categories", categories);
model.addAttribute("book", new Book());
return "BookAddForm";
}
@RequestMapping(value = "/edit-book/{id}")

5 章 数据绑定和表单标签库
84
public String editBook(Model model, @PathVariable long id) {
List<Category> categories = bookService.getAllCategories();
model.addAttribute("categories", categories);
Book book = bookService.get(id);
model.addAttribute("book", book);
return "BookEditForm";
}
@RequestMapping(value = "/save-book")
public String saveBook(@ModelAttribute Book book) {
Category category =
bookService.getCategory(book.getCategory().getId());
book.setCategory(category);
bookService.save(book);
return "redirect:/list-book";
}
@RequestMapping(value = "/update-book")
public String updateBook(@ModelAttribute Book book) {
Category category =
bookService.getCategory(book.getCategory().getId());
book.setCategory(category);
bookService.update(book);
return "redirect:/list-book";
}
@RequestMapping(value = "/list-book")
public String listBooks(Model model) {
logger.info("listBooks");
List<Book> books = bookService.getAllBooks();
model.addAttribute("books", books);
return "BookList";
}
}
BookController 依赖 BookService 进行一些后台处理。 @Autowired 注解用于给 Book
Controller
注入一个 BookService 实现。
@Autowired
private BookService bookService;


清单 5.4 BookService 接口
package service;
import java.util.List;
import domain.Book;
import domain.Category;
public interface BookService {
List<Category> getAllCategories();
Category getCategory(int id);
List<Book> getAllBooks();
Book save(Book book);
Book update(Book book);
Book get(long id);
long getNextId();
}
清单 5.5 BookServiceImpl
package service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;
import domain.Book;
import domain.Category;
@Service
public class BookServiceImpl implements BookService {
/*
* this implementation is not thread-safe
*/
private List<Category> categories;
private List<Book> books;
public BookServiceImpl() {
categories = new ArrayList<Category>();
Category category1 = new Category(1, "Computer");
Category category2 = new Category(2, "Travel");
Category category3 = new Category(3, "Health");
categories.add(category1);
categories.add(category2);

5 章 数据绑定和表单标签库
86
categories.add(category3);
books = new ArrayList<Book>();
books.add(new Book(1L, "9781771970273",
"Servlet & JSP: A Tutorial (2nd Edition)",
category1, "Budi Kurniawan", new BigDecimal("54.99"));
books.add(new Book(2L, "9781771970297",
"C#: A Beginner's Tutorial (2nd Edition) ",
category1, "Jayden Ky", new BigDecimal("39.99")));
}
@Override
public List<Category> getAllCategories() {
return categories;
}
@Override
public Category getCategory(int id) {
for (Category category : categories) {
if (id == category.getId()) {
return category;
}
}
return null;
}
@Override
public List<Book> getAllBooks() {
return books;
}
@Override
public Book save(Book book) {
book.setId(getNextId());
books.add(book);
return book;
}
@Override
public Book get(long id) {
for (Book book : books) {
if (id == book.getId()) {
return book;
}
}
return null;

5.3 数据绑定范例
87
}
@Override
public Book update(Book book) {
int bookCount = books.size();
for (int i = 0; i < bookCount; i++) {
Book savedBook = books.get(i);
if (savedBook.getId() == book.getId()) {
books.set(i, book);
return book;
}
}
return book;
}
@Override
public long getNextId() {
// needs to be locked
long id = 0L;
for (Book book : books) {
long bookId = book.getId();
if (bookId > id) {
id = bookId;
}
}
return id + 1;
}
}

三、学习参考

Spring MVC---数据绑定和表单标签

https://www.cnblogs.com/zhanglei93/p/6273655.html

(笔记)Spring MVC学习指南_数据绑定和表单标签库

https://blog.csdn.net/slowly_come_faster/article/details/53354097

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值