• 【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="100px"  value="${productCollocation.displayName}"/>
    				   <input type="hidden" name="productCollocations[${productCollocation_index}].id" class="text" maxlength="200" value="${productCollocation.id}"/>
    				</td>




  • 相关阅读:
    C# 修改DataTable列 类型 并从新赋值
    buildroot 使用小记
    如何查看linux内核的版本号?
    在ubuntu上使用华为的3G无线上网卡
    在ubuntu上编译rasbian kernel(for raspberry pi 1)
    装了ubuntu后笔记本电脑的无线网卡用不了,怎么设置?
    Ubuntu下哪个PDF阅读器更好使???
    转载 :Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码
    Raspberry Pi
    cygwin下调用make出现的奇怪现象
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4013190.html
Copyright © 2020-2023  润新知