首页 > 代码库 > 参数绑定
参数绑定
数据类型的绑定
什么叫做数据类型的绑定?
类似于struts的参数注入,从客户端请求key/value数据,通过参数绑定,把key/value绑定在Controller方法的形参上。
springmvc中,接受页面提交的数据是通过方法行形参来接收,而不是在controller类定义成员变量接受!!!!
执行流程:
客户端请求key/value --->处理器适配器提供参数绑定组件将key/value数据转化成controller方法的形参。参数绑定组件:在springmvc早起版本使用PropertyEditor(只能将字符串转化为java对象),后期使用converter(进行任意类型的转换),springmvc提供了很多controller,在特殊情况下需要自定义controller,例如日期数据绑定
默认支持绑定的类型:
直接在controller方法形参上定义下边2类型的对象,就可以使用这些对象。在参数绑定过程中,如果玉带下边类型直接绑定。
1、HttpServletRequest
2、HttpServletResponse
3、HttpSession
4、Model/ModelMap
为什么上面的可以直接绑定呢?我们知道springmvc是基于Servlet的,所以servletDispatcher中直接能得到的request、response、session就可以直接绑定了。我们查看源码发现,model的作用是将数据填充到request域,也就是说类似于一个缓存区一样,modelMap是model接口的实现类,所以model和modelMap可以直接绑定。
简单类型的绑定
1、直接绑定
要求controller形参名和request中的传入参数名一致。
2、使用@RequestParam注解
不需要形参名和request传入参数名一致
作用于参数,三个属性:value(必选),defaultValue(可选),required(可选)
value的值为request中的传入参数名,绑定注解作用的那个变量
required的值为true的时候框架会给我们加一个validate验证,如果该参数没有传入报错400不能没有指定参数
defaultValue都懂
小例子:
@ResultMapping(value="http://www.mamicode.com/editItems",method={RequestMethod.POST,RequestMethod.GET})
public String editItems(Model model,@RequestParam(value="http://www.mamicode.com/id",required=true) Integer items_id) throws Exception{
//...
}
POJO类型的绑定
只有表单元素的name和pojo类型属性名一致才能注入。
参数绑定