springmvc如何一个表单传递多个不同类型对象,其中有list。

代码是这样的

表单内容:

<input name="item.title" type="text" />
<input name="itemDesc.desc" type="text" />
<input name="itemImg.src" type="text" />
<input name="itemImg.src" type="text" />
<input name="itemImg.src" type="text" />

Controller:

    @RequestMapping(value="/new", method=RequestMethod.POST)
    @ResponseBody
    public MsgResult createItem(TbItem item, TbItemDesc itemDesc, List<TbItemImg> itemImg, HttpServletRequest request, HttpServletResponse response) {
        //itemImg出错
        //...
    }

    @InitBinder("tbItem")
    public void itemBinder(WebDataBinder webDataBinder){
        webDataBinder.setFieldDefaultPrefix("item.");
    }
    
    @InitBinder("tbItemImg")
    public void itemImgBinder(WebDataBinder webDataBinder){
        webDataBinder.setFieldDefaultPrefix("itemImg.");
    }
    @InitBinder("tbItemDesc")
    public void itemDescBinder(WebDataBinder webDataBinder){
        webDataBinder.setFieldDefaultPrefix("itemDesc.");
    }

其他两个参数是正常传递的,但是img没有转化成List,报错:
Failed to instantiate [java.util.List]: Specified class is an interface

怎么解决,谢谢各路大神。

阅读 3.9k
1 个回答

页面上传了三个String,控制层直接用List<String>接收,这样收据类型对不上,肯定不能接收到。
建议: 前端页面直接把三个图片地址拼接成一个字符串,逗号隔开,控制层直接用一个String接收,然后在Java中转换成List

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题