【FAQ】SpingMVC实现集合參数(Could not instantiate bean class [java.util.List])

需求,要求批量新增或者改动一个List,在Spring MVC中是不支持以下代码的写法

	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public String update(List<ProductCollocation> productCollocations ,HttpServletRequest request, RedirectAttributes redirectAttributes) {
		for (ProductCollocation productCollocation : productCollocations) {
			productCollocation.setModifyDate(DateUtil.getDate());
			productCollocationService.update(productCollocation, "create_date","product","collocation","description");
		}
		addFlashMessage(redirectAttributes, SUCCESS_MESSAGE);
		return "redirect:list.jhtml";
	}

会抛出异常

nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.List]: 

是否事实上也非常easy,Spring MVC 须要支持Form表单对象的方式映射,使用get set器来填充对象。

新增一个Form

public class ProductCollocationForm {
	List<ProductCollocation> productCollocations;

	/**
	 * @return the productCollocations
	 */
	public List<ProductCollocation> getProductCollocations() {
		return productCollocations;
	}

	/**
	 * @param productCollocations the productCollocations to set
	 */
	public void setProductCollocations(List<ProductCollocation> productCollocations) {
		this.productCollocations = productCollocations;
	}
}

再使用Form来set对象

	@RequestMapping(value = "/update", method = RequestMethod.POST)
	public String update(ProductCollocationForm productCollocationForm ,HttpServletRequest request, RedirectAttributes redirectAttributes) {
		for (ProductCollocation productCollocation : productCollocationForm.getProductCollocations()) {
			productCollocation.setModifyDate(DateUtil.getDate());
			productCollocationService.update(productCollocation, "create_date","product","collocation","description");
		}
		addFlashMessage(redirectAttributes, SUCCESS_MESSAGE);
		return "redirect:list.jhtml";
	}

前台就能够使用索引的方式对后台对象设置值了

<td>
				   <input type="text" name="productCollocations[${productCollocation_index}].displayName" class="text" maxlength="200"  style="width:100px"  value="${productCollocation.displayName}"/>
				   <input type="hidden" name="productCollocations[${productCollocation_index}].id" class="text" maxlength="200" value="${productCollocation.id}"/>
				</td>
时间: 2024-10-17 03:02:39

【FAQ】SpingMVC实现集合參数(Could not instantiate bean class [java.util.List])的相关文章

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需求 表现层实现 list绑定 需求 表现层实现 map绑定 本文主要介绍注解开发的集合类型參数绑定,包含数组绑定,list绑定以及map绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品.批量删除. 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形參,方法形參使用数组接收页面请求的多个商

setsockopt()使用方法(參数具体说明)

int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen); s(套接字): 指向一个打开的套接口描写叙述字level:(级别): 指定选项代码的类型.SOL_SOCKET: 基本套接口IPPROTO_IP: IPv4套接口IPPROTO_IPV6: IPv6套接口IPPROTO_TCP: TCP套接口optname(选项名): 选项名称optval(选项值): 是一个指向变量的指针 类型:整形,套接口

pthread_create()创建线程时传入多个參数

因为接口仅仅定义了一个入參void *arg int pthread_create(pthread_t *tidp,const pthread_attr_t *attr, (void*)(*start_rtn)(void*),void *arg); 所以,假设想传參数,须要封装结构体.将多个參数通过一个结构体传入线程. typedef struct { FUNCPTR entry; /* 函数入口*/ void *arg[10]; /* 參数*/ }FUNC; void *start(void

java之 ------ 可变參数和卫条件

可变參数:适用于參数个数不确定.类型确定的情况,java把可变參数当做数组处理. 可变參数必须位于最后一项.当可变參数个数多于一个时,必将有一个不是最后一项,所以仅仅支持有一个可变參数. 可变參数的书写形式如: int add(int x,int ...args){  方法体 } ... 位于变量类型和变量名之间.前后有无空格都能够: 调用可变參数的方法时.编译器为该可变參数隐含创建一个数组,在方法体中以数组的形式訪问可变參数. 条件逻辑推断型的应用(模拟人工推理) /* 有人邀请A,B,C,D

nginx的 CPU參数worker_processes和worker_cpu_affinity使用说明

Nginx默认没有开启利用多核CPU,我们能够通过添加worker_cpu_affinity配置參数来充分利用多核CPU.CPU是任务处理,计算最关键的资源,CPU核越多.性能就越好. worker_cpu_affinity这个參数要结合 worker_processes来一起使用. 首先 先说 worker_processes: worker_processes指明了nginx要开启的进程数,据官方说法,一般开一个就够了,多开几个.能够降低机器io带来的影响. 一般为当前机器总cpu核心数的1

springmvc 处理lsit类型的请求參数映射成实体属性

<table align="center" cellspacing="10"> <tr> <td> 母码数目:<input type="text" name="uidCodeGenNumParamList[0].superCodeGenNum" style="width:180px;" class="textbox" maxlength=&quo

STL算法设计理念 - 函数对象和函数对象当參数和返回值

函数对象: 重载函数调用操作符的类.其对象常称为函数对象(function object),即它们是行为类似函数的对象. 一个类对象,表现出一个函数的特征,就是通过"对象名+(參数列表)"的方式使用一个类对象,假设没有上下文,全然能够把它看作一个函数对待. 这是通过重载类的operator()来实现的. "在标准库中.函数对象被广泛地使用以获得弹性".标准库中的非常多算法都能够使用函数对象或者函数来作为自定的回调行为: demo #include <iostr

【安卓开源】安卓拼图实现,数据驱动,可记录图片位置參数,希望大家有兴趣一起完好、!

简单的"拼图"实现 1.可自由显示多张图片,每张可自由移动.旋转.缩放 2.基于json的图形位置參数存储 3.手动摆放位置后,可记录位置參数至文件 兴许: 1.切换图形位置时加上渐变动画 2.眼下录入的參数为绝对參数,没有相对手机宽度做相对參数,后期完好 ... 欢迎大家一起来丰富一些有趣的功能.!

Androidclient性能參数监控

背景: 在做androidclient測试的时候.有时候须要监控cpu/mem/电量消耗/界面载入时间/流量等等指标. 于是俺们就上下求索,网友告诉我两个方案:AnotherMonitor和Emmagee,在此之前.我自己写了一个工具,下文就这几个方案做一下比較和说明. AnotherMonitor和Emmagee都是apk的形式存在的.以下是官网: https://code.google.com/p/anothermonitor/ https://github.com/NetEase/Emma