在使用springmvc时,难免会遇到需要接收一个封装javaBean的list数据,那么如何处理这些数据了?
一:创建于一个包含此list的包装类,在springmvc的方法参数中直接用包装类接收。但是使用包装类也是有限制的,必须说明前台传递的javaBean是包装类中list的元素
jsp中datagrid代码:
field : 'usergysid', hidden : true, formatter: function(value,row,index){ return '<input type="hidden" name="lists['+index+'].userid" value="'+row.userid+'" />'; }
java代码:
public class SysuserCustomVo { private List<User> lists;
public class User{ private userid; private username;
RequestMapping("/xxxxxxxxx") public @ResponseBody SubmitResultInfo gysypmladdsubmit( HttpSession session, String[] indexs, SysuserCustomVo customVo)throws Exception
二:这种方式也是我推荐的,将前端的list数据转换成json数据,然后通过jackson解析成List数据
var param=JSON.stringify($('#custom_filt_table').datagrid("getData"));
后台接收数据:
public String filtop(String json) throws Exception { Filtrate filtrate = new Filtrate(); //创建一个实体类接收json分解后的数据 json = json.replaceAll(""", "\""); //由于传递的json中有双引号,在springmvc中会自动转译,所以需要全部替换回来 List<Filtrate> filts = parameter2JavaBean.setJson2List(filtrate, json);
public class parameter2JavaBean { public static ObjectMapper mapper = new ObjectMapper(); /** * 返回泛型 List<T> * @throws IOException * @throws JsonMappingException * @throws JsonParseException * */ public static <T> List<T> setJson2List(T t ,String str) throws JsonParseException, JsonMappingException, IOException{ Class<?> clazz = t.getClass(); JavaType javaType = getCollectionType(ArrayList.class, clazz); return mapper.readValue(str,javaType); } /** * 获取泛型的Collection Type * * @param collectionClass * 泛型的Collection * @param elementClasses * 元素类 * @return JavaType Java类型 * @since 1.0 */ public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) { return mapper.getTypeFactory().constructParametricType(collectionClass,elementClasses); }
想了解jackson的可以看看:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html
如何转换复杂类型的:http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024993.html