数据绑定是指把web页面提交的参数转换为一个数据对象的操作。传统的数据绑定是手工完成的,即通过HttpServletRequest中获取参数,如:request.getParameter("name");当对象数量多的时候,抽取参数、组合对象的代码就会冗长复杂。Spring提供的数据绑定功能,能够自动将参数赋予指定的对象。
protected ModelAndView onSubmit(Object command, BindException errors)
throws Exception {
对象类型 对象名 = (对象类型)command;
}
实现数据绑定需要进行如下的配置“
1、被绑定的对象必须符合Javabean的规范,简单来说,就是该对象必须有无参的构造函数,和get和set方法
2、然后在web-context中进行如下配置
<bean name="/editClient.do" class="控制器的全路径">
...
<property name="commandName">//在jsp页面中以clientDTO代表此被绑定的对象
<value>clientDTO</value>
</property>
<property name="commandClass">
<value>实体类全路径</value>
</property>
...
</bean>
此时在jsp页面的部分代码为:
<spring:bind path="clientDTO.name">
<input type="text" name='<c:out value="${status.expression}"/>' value='<c:out value="${status.value}"/>'>
</spring:bind>
${status.expression}获得绑定属性的名称。因为上面代码中<spring:bind>绑定的是ClientDTO的name属性,则${status.expression}的值也是name。
${status.value}获得绑定属性的值。上面代码中,假如ClientDTO中的name为“张三”,则${status.value}的值也是“张三”。
3、页面数据命名必须和对象属性保持一致
页面提交的HTML元素名称,必须和绑定的对象属性名称保持一致,使用上面的例子即可, <input type="text" name='<c:out value="${status.expression}"/>' value='<c:out value="${status.value}"/>'>,当然也可以直接把名称硬写(不推荐),
<spring:bind path="clientDTO.name">
<input type="text" name="name" value='<c:out value="${status.value}"/>'>
</spring:bind>