软件开发实训(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 元素的对象的 Collection、 Map 或者 Array
itemLabel item 属性中定义的 Collection、 Map 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 Collection、 Map 或者 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 元素的对象的 Collection、 Map 或者 Array
itemLabel item 属性中定义的 Collection、 Map 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 Collection、 Map 或者 Array 中的对象属性,为每个 input 元素提供值
path 要绑定的属性路径
表  5.11 select  标签的属性
属性 描述
cssClass 定义要应用到被渲染 input 元素的 CSS 
cssStyle 定义要应用到被渲染 input 元素的 CSS 样式
cssErrorClass 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass
属性值
htmlEscape 接受 true 或者 false,表示是否应该对被渲染的(多个)值进行 HTML 转义
items 用于生成 input 元素的对象的 Collection、 Map 或者 Array
itemLabel item 属性中定义的 Collection、 Map 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 Collection、 Map 或者 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 元素的对象的 Collection、 Map 或者 Array
itemLabel item 属性中定义的 Collection、 Map 或者 Array 中的对象属性,为每个 input 元素提供标签
itemValue item 属性中定义的 Collection、 Map 或者 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}")

第 章 数据绑定和表单标签库
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);

第 章 数据绑定和表单标签库
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

猜你喜欢

转载自blog.csdn.net/ljn745991104/article/details/80017787