内容关键词:表单标签库中的标签及其属性
授课老师: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 元素中渲染字段错误 |
属性 | 描述 |
acceptCharset | 定义服务器接受的字符编码列表 |
commandName | 暴露表单对象之模型属性的名称,默认为 command |
cssClass | 定义要应用到被渲染 form 元素的 CSS 类 |
cssStyle | 定义要应用到被渲染 form 元素的 CSS 样式 |
htmlEscape | 接受 true 或者 false,表示被渲染的值是否应该进行 HTML 转义 |
modelAttribute | 暴露表单支持对象的模型属性名称,默认为 command |
属性 | 描述 |
cssClass | 定义要应用到被渲染 input 元素的 CSS 类 |
cssStyle | 定义要应用到被渲染 input 元素的 CSS 样式 |
cssErrorClass | 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass 属性值 |
htmlEscape | 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义 |
path | 要绑定的属性路径 |
属性 | 描述 |
cssClass | 定义要应用到被渲染 input 元素的 CSS 类 |
cssStyle | 定义要应用到被渲染 input 元素的 CSS 样式 |
cssErrorClass | 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass 属性值 |
htmlEscape | 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义 |
path | 要绑定的属性路径 |
showPassword | 表示应该显示或遮盖密码,默认值为 false |
属性 | 描述 |
htmlEscape | 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义 |
path | 要绑定的属性路径 |
属性 | 描述 |
cssClass | 定义要应用到被渲染 input 元素的 CSS 类 |
cssStyle | 定义要应用到被渲染 input 元素的 CSS 样式 |
cssErrorClass | 定义要应用到被渲染 input 元素的 CSS 类,如果 bound 属性中包含错误,则覆盖 cssClass 属性值 |
htmlEscape | 接受 true 或者 false,表示是否应该对被渲染的值进行 HTML 转义 |
path | 要绑定的属性路径 |
属性 | 描述 |
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 | 要绑定的属性路径 |
属性 | 描述 |
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 | 要绑定的属性路径 |
属性 | 描述 |
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 | 要绑定的属性路径 |
属性 | 描述 |
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 | 要绑定的属性路径 |
属性 | 描述 |
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}")
第 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