springmvc踩坑记

来源:互联网 发布:宇宙射线知乎 编辑:程序博客网 时间:2024/06/05 08:38

今天尝试用springmvc上传图片。因为上传图片不像表单上传只需要几个key,value,所以form标签的enctype属性值为multipart/form-data,一个图片上传字段,还有其他一下字段,

代码如下:

<form method="post" action="${pageContext.request.contextPath}/item/addItem.do" enctype="multipart/form-data" >    商品名称:<input name="name" value="${item.name}" /><br>    商品价格:<input name="price" value="${item.price}" /><br>    商品描述:<input name="description" value="${item.description}" /><br>    创建日期:<input name="createtime" value="${item.createtime}" /><br>    商品图片:<input type="file" name="uploadImg"/>    <input type="submit" value="go" /></form>

在后台java控制器中接收参数

@RequestMapping("/addItem.do")public String addItem(@ModelAttribute(value = "item") customItem citem, MultipartFile uploadImg){    //server.addItem( citem );    return "addItemPage";}

当然,为了能让springmvc框架处理表单上传的数据,需要在springmvc的控制文件中加入如下配置,这里我说的处理是当表单的enctype=‘multipart/form-data’ 的时候需要下面这个类来处理一下数据,但是以下的配置方式是错误的。

<bean id="multipart" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >    <property name="maxUploadSize" value="5242880" ></property></bean>


我把id取名为multipart时,springmvc 获取不到这个bean, 可以看一下源码

private void initMultipartResolver(ApplicationContext context) {    try {        this.multipartResolver = (MultipartResolver)context.getBean("multipartResolver", MultipartResolver.class);        if(this.logger.isDebugEnabled()) {            this.logger.debug("Using MultipartResolver [" + this.multipartResolver + "]");        }    } catch (NoSuchBeanDefinitionException var3) {        this.multipartResolver = null;        if(this.logger.isDebugEnabled()) {            this.logger.debug("Unable to locate MultipartResolver with name \'multipartResolver\': no multipart request handling provided");        }    }}

这段代码在DispatcherServlet类中。

它通过multipartResolver 来获取bean,所以在写bean的id的时候不能必须为multipartResolver,不能自定义(当然不是绝对的)任意的id;

真确的配置如下

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >    <property name="maxUploadSize" value="5242880" ></property></bean>










原创粉丝点击