SpringMVC表单标签概述
使用前必须在JSP页面中添加一行引用Spring标签库的taglib指令声明
<%@ taglib prefix="fm" url="http://www.springframework.org/tags/form" %>
引入标签声明之后就可以使用spring表单标签
<fm:form/>:渲染表单元素
<fm:input/>:渲染输入框元素
......
SpringMVC表单标签库
- form标签
SpringMVC中的form标签有两个作用
- 自动绑定Model中的一个属性值到当前form对象的实体对象,默认为command属性,这样我们就可以在form表单体中方便地使用该对象的属性
- 支持我们在提交表单时使用除了GET和POST之外的其他方法进行提交,包括DELETE,PUT等,
属性有:modelattribute(绑定的模型属性名称);commandName(绑定的也是模型属性名称,作用和modelattribute一样);acceptCharset(定义服务器接收的字符编码)
其中command属性是很重要的属性,定义了模型属性的名称,其中包含一个绑定的JavaBean对象,该对象的属性将用于填充生成的表单,如commandName属性存在,则不需在返回包含该表单的视图的请求处理方法中添加响应的模型属性
- input标签
SpringMVC的input标签的唯一作用是绑定表单数据,通过path属性来指定绑定的Model中的值
<%@ taglib prefix="fm" url="http://www.springframework.org/tags/form" %>
<body>
<h3>注册界面</h3>
<fm:form action="register" method="post">
姓名:<fm:input path="name"/><br>
性别:<fm:input path="sex"/><br>
年龄:<fm:input path="age"/><br>
</fm:form>
</body>
如果model中存在一个属性名称为command的javabean,而且该javabean拥有name,sex,age,则在渲染代码上时就会取command的对应属性赋值给对应标签的属性
实体类
public class User{
private String name;
private String sex;
private int age;
//省略setter和getter
}
controller层代码实现register方法
@Controller
public class UserController{
@RequestMapping(value="/register",method=RequestMethod.GET){
User user=new User("zhangsan","男",23);
//model中添加属性command,值为user对象
model.addAttribute("command",user);
return "register";
}
}
指定modelAttribute属性也可以达到相同效果
<fm:form modelAttribute="user" action="register" method="post">
</fm:form>
修改controller层代码
model.addAttribute("user",user);
- password标签
<fm:password path="password">
- hidden标签
生成隐藏域,界面上看不到任何内容
<fm:hidden path="hid">
- textarea标签
支持多行输入的HTML元素
<fm:textarea path="remark" rows="5" col