目录

1.1、简介

从Spring2.0起就提供了一组全面的自动数据绑定标签来处理表单元素。生成的标签兼容HTML 4.01与XHTML 1.0。表单标签库中包含了可以用在JSP页面中渲染HTML元素的标签。表单标记库包含在spring-webmvc.jar中,库的描述符称为spring-form.tld,为了使用这些标签必须在jsp页面开头处声明这个tablib指令。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

以下表格展示了标签库中的常用标签:

标签

描述

form

渲染表单元素form

input

渲染<input type=”text”/>元素

password

渲染<input type=”password”/>元素

hidden

渲染<input type=”hidden”/>元素

textarea

渲染textarea元素

checkbox

渲染一个<input type=”checkbox”/>复选元素

checkboxs

渲染多个<input type=”checkbox”/>元素

radiobutton

渲染一个<input type=”radio”/>单选元素

radiobuttons

渲染多个<input type=”radio”/>元素

select

渲染一个选择元素

option

渲染一个可选元素

options

渲染多个可选元素列表

errors

在span元素中渲染字段错误

1.2、常用属性

path:要绑定的属性路径,最重要的属性,多个元素必填,相当于 modelAttribute.getXXX() 

cssClass:定义要应用到被渲染元素的CSS类,类样式。

cssStyle:定义要应用到被渲染元素的CSS样式,行内样式。

htmlEscape:接受true或者false,表示是否应该对被渲染的值进行HTML转义。

cssErrorClass:定义要应用到被渲染input元素的CSS类,如果bound属性中包含错误,则覆盖cssClass属性值。

1.3、form标签与input标签

这个标签会生成HTML form标签,同时为form内部所包含的标签提供一个绑定路径(binding path)。 它把命令对象(command object)存在PageContext中,这样form内部的标签就可以使用这个对象了。标签库中的其他标签都声明在form标签的内部。

让我们假设有一个叫User的领域对象,它是一个JavaBean,有着诸如 firstName和lastName这样的属性。我们将把它当作 一个表单支持对象(form backing object),它对应的表单控制器用 form.jsp页面来显示表单。

commandName:暴露表单对象的模型属性名称,默认为command,它定义了模型属性的名称,其中包含了一个backing object,其属性将用于填充生成的表单。如果该属性存在,则必须在返回包含该表单的视图的请求处理方法中添加相应的模型属性。

modelAttribute:暴露form backing object的模型属性名称,默认为command

commandName与modelAttribute功能基本一样,使用modelAttribute就可以了,因为commandName已被抛弃。

如果在页面中使用form不设置任意属性<form:form/>,解析后的结果如下:

<form id="command" action="/SpringMVC04/bar/action11" method="post"></form>

新建一个控制器,在控制器中添加一个action

 1 package com.zhangguo.springmvc04.controllers;
 2 import org.springframework.stereotype.Controller;
 3 import org.springframework.ui.Model;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import com.zhangguo.springmvc04.entities.Product;
 6 
 7 @Controller
 8 @RequestMapping("/bar")
 9 public class BarController {
10     @RequestMapping("/action11")
11     public String action11(Model model){
12         //向模型中添加一个名为product的对象,用于渲染视图
13         model.addAttribute("product", new Product("Meizu note1", 999));
14         return "bar/action11";
15     }
16 }
代码示例

相关文章: