Spring MVC数据绑定

  1. public String other(Locale locale, Principal principal)  
  2. java.util.Locale:得到当前请求的本地化信息,默认等价于ServletRequest.getLocale(),如果配置LocaleResolver解析器则由它决定Locale,后续介绍;

    java.security.Principal:该主体对象包含了验证通过的用户信息,等价于HttpServletRequest.getUserPrincipal()。

  3. http://jinnianshilongnian.iteye.com/blog/1698916

且不能直接绑定到map,list,set等,因为他们是接口 ,并不能实例化,若要绑定到其中,需要放在某个bean中。

 

浅谈 SpringMVC 数据绑定

页面传数据有两种方式

1、参数与值对,一大堆参数与一大堆值对,form提交时常用

这种,Spring mvc可以直接在后台绑定到方法的参数中,如参数为permissions,则就可以直接绑定到该参数上。

2、json字符串型

以{}为开始与结束的标志

这种对于没有插件的Spring来说是无法绑定的,要绑定则需要

扩展SpringMVC以支持绑定JSON格式的请求参数

或者可以使用@RequestBody把整个请求作为整体传递给后台

使用时机:

A) GET、POST方式提时, 根据request header Content-Type的值来判断:

  •     application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
  •     multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
  •     其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

B) PUT方式提交时, 根据request header Content-Type的值来判断:

  •     application/x-www-form-urlencoded, 必须;
  •     multipart/form-data, 不能处理;
  •     其他格式, 必须;

说明:request的body部分的数据编码格式由header部分的Content-Type指定;

method(@RequestBody Map map) {
 
map.get("code");
 
}
这样也是可以的,但是并不能绑定到对象上,不建议使用。
method(@RequestBody JSONObject jsonObj) {
  jsonObj.getString("code");
}
这样也行,前提是要配置转换器
 
前台传数组的话必须使用param[index]="xxx"来传递,如果没有index也会有问题。但是如此的话,直接使用对象发送ajax就有问题了,必须使用html标签名为param[index]来最终传递对象。
 
js中对象不能
{
s[0]=1,
s[1]=2
}
这种形式定义数组。
而且若不以这种形式定义数组,提交后的参数中并没有数组下表,后台绑定数据可能有误。
若直接post js对象,且不经过json转换,则js对象中的数组会变为
name[]=xx
name[]=yy
的这种形式
 
 
使用BindingResult返回错误信息到页面。
http://blog.sina.com.cn/s/blog_6829be5c0101alxh.html
原文地址:https://www.cnblogs.com/guangshan/p/4494503.html