表单标签库的实现类在spring-webmvc-5.0.4RELEASE.jar文件中,要使用Spring MVC的表单标签库,首先要和使用JSTL标签一样,必须在JSP页面中添加一行引用Spring标签库的taglib指令声明。
<%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form" %>
form标签
作用:
- 自动绑定Model中的一个属性值到当前form对应的实体对象,默认为command属性,这样我们就可以再form表单中方便的使用该对象的属性了
- 除了POST,GET方式提交之外,还可以使用DELETE,PUT
常用属性: - modelAttribute:form绑定的模型属性名称,默认为command
- commandName:form绑定的也是模型属性名称,默认为command。作用与modelAttribute相同。
- acceptCharset:定义服务器接受的字符编码
input标签
Spring MVC的input标签会被渲染为一个类型为text的普通HTML input标签。使用Spring MVC的input标签的唯一作用就是绑定表单数据,通过path属性来指定要绑定的Model中的值
我在项目中是把这个页面放在了ch08里,所以要修改springmvc.xml文件
写User实体类
包括上述三个属性,setter,getter,toString,含参构造方法,空构造方法
写UserController类
部署项目并运行
Spring MVC指定form标签默认自动绑定的是Model的command属性值,那么当form对象对应的属性名称不是command时怎么办?
修改register.jsp页面中的form标签
更改UserController中的register方法
如果没有变成user可以重启tomcat,还没有变可以把eclipse关了再开下,就行了
password标签
也就比正常的多了个属性showPassword,表示是否应该显示或遮盖密码
hidden标签
用法跟input,type为hidden意思一样
<fm:hidden path="hid"/>
会被渲染成
<input id="hid" name="hid" type="hidden" value=""/>
textarea标签
<fm:textarea path="remark" rows="5" cols="20"/>
会被渲染成
<textarea id="remark" name="remark" rows="5" cols="20"></textarea>
checkbox标签
再user实体类中添加一些属性,并添加相应getter,ssetter方法
reader会处于默认选中状态
courses里选中的也是u二十添加到user模型里的
radiobutton 标签
其实跟checkbox用法差不多,只不过这个是单选
select标签
下拉框
option标签
下拉框里面的选项
其实都一样,都是给模型填好默认选中值,然后确定模型名和表单modelAttribute属性值一致
还有一处说不清楚,我画图表示
options标签
items属性:可以利用它自动加载后台传来的数据
通过select标签的items属性绑定Map
通过options标签的items属性绑定Map
添加options标签的items属性绑定Object,并使用itemLabel和itemValue属性来加载数据。
修改UserController
修改select.jsp页面
因为经常要从数据库中取出对象,用这个方法挺好的好像
errors标签
Spring MVC的errors标签,简单来说,写登录界面时,密码框旁边提示密码错误的错误信息可以用这个标签。
先写一个验证类
再UserController类中,使用@InitBinder注解绑定验证对象
那么问题来了,他用javascript不香吗?