转自:
Spring MVC中表单标签的功能:将JSP页面渲染出相应的HTML元素,使浏览器可正常显示信息。
Spring MVC使用注意事项:
JSP中Spring MVC标签需在头部使用taglib声明,如下所示:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
名称 | 作用 |
---|---|
form | 渲染一个html表单元素 |
input | 渲染一个html 元素 |
password | 渲染一个html 元素 |
hidden | 渲染一个html 元素 |
textarea | 渲染一个htmltextarea 元素 |
checkbox | 渲染一个html 元素 |
checkboxes | 渲染一个html 元素 |
radiobutton | 渲染一个html 元素 |
radiobuttons | 渲染一个html包含多个 元素 |
select | 渲染一个html select选择元素 |
option | 渲染一个html中select中选项元素 |
options | 渲染多个选项元素 |
errors | 在span元素中渲染字段错误 |
表单标签的语法格式如下:
...
表单标签除了具有 HTML 表单元素属性以外,还具有 acceptCharset、commandName、cssClass、cssStyle、htmlEscape 和 modelAttribute 等属性。
commandName 和 modelAttribute 属性的功能基本一致,
用于绑定一个 JavaBean 对象。
如:控制器类 UserController 的方法
inputUser 是返回 userAdd.jsp 的请求处理方法
inputUser 方法如下:
@RequestMapping(value="/input") public String inputUser(Model model) { ... model.addAttribute("user", new User()); return "userAdd"; }
userAdd.jsp中内容如下:
...
注意事项:
当inputUser方法中,没有 Model 属性 user,userAdd.jsp 页面就会抛出异常,
由于表单标签无法找到在其 modelAttribute 属性中指定的 form backing object。
input 标签的语法格式如下:
该标签除了有 cssClass、cssStyle、htmlEscape 属性以外
还有一个最重要的属性——path
path 属性的功能:
将文本框输入值绑定到 form backing object 的一个属性。
如下:
以上代码可将输入值绑定到 user 对象中的userName属性
password 标签的语法格式如下:
此标签同input标签用法相同,只是显示不同
hidden 标签的语法格式如下:
此标签同input标签用法相同,只是显示不同
由于此标签无需显示,所以此标签不支持cssClass及cssStyle属性
textarea 基本上就是一个支持多行输入的 input 元素,语法格式如下:
此标签同input标签用法相同,只是显示不同
checkbox 标签的语法格式如下:
多个 path 相同的 checkbox 标签,它们是一个选项组,允许多选,选项值绑定到一个数组属性。
如下:
以上代码中复选框的值绑定到一个字符串数组属性 friends(String[] friends)
此标签的其它用法同input标签相同
checkboxes 标签渲染多个复选框,是一个选项组,相当于多个 path 相同的 checkbox 标签。
此标签拥有3 个非常重要的属性,即 items、itemLabel 和 itemValue
checkboxes 标签的语法格式如下:
如下:
上述示例代码是将 model 属性 chkList的内容(集合元素)渲染为复选框。
在 itemLabel 和 itemValue 省略的情况下,
当集合是数组,复选框的 label 和 value 相同;
当为 Map 集合,复选框的 label 是 Map 的值(value),复选框的 value 是 Map 的关键字(key)
radiobutton 标签的语法格式如下:
多个 path 相同的 radiobutton 标签,它们是一个选项组,只允许单选。
radiobuttons 标签渲染多个 radio,是一个选项组,相当于多个 path 相同的 radiobutton 标签。
radiobuttons 标签的语法格式如下:
该标签的 itemLabel 和 itemValue 属性与 checkboxes 标签的 itemLabel 和 itemValue 属性完全一样,但只允许单选。
select 标签的选项可能来自其属性 items 指定的集合,或者来自一个嵌套的 option 标签或 options 标签。其语法格式如下:
或
或
该标签的 itemLabel 和 itemValue 属性与 checkboxes 标签的 itemLabel 和 itemValue 属性完全一样。
options 标签生成一个 select 标签的选项列表
此标签需结合select标签一起使用
errors 标签渲染一个或者多个 span 元素,每个 span 元素包含一个错误消息。
或