java.security.Principal:该主体对象包含了验证通过的用户信息,等价于HttpServletRequest.getUserPrincipal()。
http://jinnianshilongnian.iteye.com/blog/1698916且不能直接绑定到map,list,set等,因为他们是接口 ,并不能实例化,若要绑定到其中,需要放在某个bean中。
页面传数据有两种方式
1、参数与值对,一大堆参数与一大堆值对,form提交时常用
这种,Spring mvc可以直接在后台绑定到方法的参数中,如参数为permissions,则就可以直接绑定到该参数上。
2、json字符串型
以{}为开始与结束的标志
这种对于没有插件的Spring来说是无法绑定的,要绑定则需要
或者可以使用@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