spring webflow : 上传单个文件实例

准备

  1. 如果你项目中使用了spring security的话,参考上一篇文章,使用上篇的第二种方法,并去掉MultipartFilter(如果有配置的话),否则得不到文件

  2. 流程中的变量(如用var标签定义的变量),都需要实现Serializable接口。

实现过程

在pom.xml文件中加入下列依赖:

<!-- 支持文件上传 -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2.1</version> 
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>

在spring-servlet.xml(Spring MVC的配置文件)中加入文件上传解析器:

<!-- 文件上传解析器--> 
     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- one of the properties available; the maximum file size in bytes -->
        <property name="maxUploadSize" value="10485760"/>
    </bean>

实体类,记住要实现Serializable接口,属性类型是MultipartFile

@Component
public class GoodsEntity implements Serializable{

    private static final long serialVersionUID = 1L;
    private MultipartFile images; 

    public MultipartFile getImages() {
        return images;
    }

    public void setImages(MultipartFile images) {
        this.images = images;
    }

}

流程定义代码,没什么特别的:

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

         <var name="goods" class="com.huanle.model.entity.GoodsEntity"/>

         <view-state id="viewfirst" view="/views/user/releasegoods/release_first.jsp" model="goods">
           <transition on="submit" to="viewsecond"></transition>
         </view-state> 

         <view-state id="viewsecond" view="/views/user/releasegoods/second.jsp" model="goods">
           <transition on="submit" to="performReleaseGoodsAction"></transition>
         </view-state>

         <action-state id="performReleaseGoodsAction" >
             <evaluate expression="goodsService.save(goods)"></evaluate>
             <transition to="returntouserindex"></transition>
         </action-state>

         <end-state id="returntouserindex" view="/views/user/seller/index.jsp"></end-state>

         <global-transitions>
           <transition on="cancel" to="returntouserindex"></transition>
         </global-transitions>

</flow>

上传表单代码,无需特别配置:

 <form:form action="${flowExecutionUrl}&_eventId=submit&${_csrf.parameterName}=${_csrf.token}" method="post" commandName="goods" enctype="multipart/form-data">
                    <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/>

                  商品图片:<form:input id="images" path="images" type="file" multiple="multiple" />

                 <input type="submit" >       
 </form:form>

就这样就可以了

参考文档

  1. Handling File Uploads in webflow

  2. Spring’s multipart (file upload) support in Spring MVC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值