zoukankan      html  css  js  c++  java
  • 【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>




  • 相关阅读:
    WCF初探-21:WCF终结点(endpoint)
    WCF初探-20:WCF错误协定
    WCF初探-19:WCF消息协定
    WCF初探-18:WCF数据协定之KnownType
    WCF初探-17:WCF数据协定之等效性
    WCF初探-16:WCF数据协定之基础知识
    WCF初探-15:WCF操作协定
    WCF初探-14:WCF服务协定
    WCF初探-13:WCF客户端为双工服务创建回调对象
    WCF初探-12:WCF客户端异常处理
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4013190.html
Copyright © 2011-2022 走看看