public ActionForward editAcc(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

                 DiskFileItemFactory factory = new DiskFileItemFactory();
//超越4KB就往磁盘里面写数据,小于这个值就存入内存
factory.setSizeThreshold(4096);
//设置磁盘路径
String filePath=request.getSession().getServletContext().getRealPath("/temp/");
factory.setRepository(new File(filePath));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(10000000);
List fileItems = upload.parseRequest(request); //因为ACTION采用了SPRING代理,此构建总是返回一个 size为0的列表。估计是request不能原样传入!
}可有解决方略,实在不行就改成JSP了。

解决方案 »

  1.   

    代码都贴出来了,就那么一点。别处??开始我也认为跟代理没有关系,但是后来发现在action中获得环境上下文根本不能用。或是NULL,(如果不代理就能使用)才得出这么个结论。
      

  2.   

    List fileItems = upload.parseRequest(request);在parseRequest中看看request是否可用?如果可用,那就是这个方法的问题了.
      

  3.   

    晕:代理没必要写代码吧!发出来你看吧!
            spring配置文件
    <bean name="/editfile" class="com.web.actions.CEEditFileAction">
    </bean>
            struts配置文件
    <action 
    path="/editfile"
    type="org.springframework.web.struts.DelegatingActionProxy"
    name="CEEditFileForm"
    scope="request"
    parameter="method"
    >
    <forward name="editFile" path="/CEEditFile/CEEditFile01.jsp"></forward>
      

  4.   

    呵呵,我看也是代理的问题,不过你不能下个断点看下吗?到底是怎么回事,就算被代理了,应该代理中也包含了真正的原样的request,应该有办法获得吧
      

  5.   

    走过--返回size为0的List ---原样的到底是什么呢?如何获得都是很大的问题呀!但是request绝对不影响属性使用。
      

  6.   

    走过的话,属性没问题的话,那不一定是代理的问题吧,parseRequest的话,分析的应该是http协议的body,你request.getContentLength()看看request.getInputStream看看request里面的内容呢,再看看你的表单的格式啊,还有就是request.getContentType()
      

  7.   

    楼主,你的文件上传的那个页面上,form的参数设置都正确不?
      

  8.   

    楼主:我有点不明白你做的意思:
        
    DiskFileItemFactory factory = new DiskFileItemFactory(); 
    //超越4KB就往磁盘里面写数据,小于这个值就存入内存 
    factory.setSizeThreshold(4096); 
    //设置磁盘路径 这里设置路径,你这个路劲是保存文件的路劲吧!
    String filePath=request.getSession().getServletContext().getRealPath("/temp/"); 
    //这里new 一个file,此file是什么?
    factory.setRepository(new File(filePath)); ServletFileUpload upload = new ServletFileUpload(factory); 
    upload.setSizeMax(10000000); 
    //upload现在是什么?
    List fileItems = upload.parseRequest(request); //因为ACTION采用了SPRING代理,此构建总是返回一个 size为0的列表。估计是request不能原样传入! 
    楼主:实在不好意思,麻烦给我讲解下好吗?谢谢!
      

  9.   

     用了代理 ??? 你在 action 中 怎么没有 从容器中 获取 业务的对象,进行初始化? 对象没有初始化, 肯定就会 NULL!
      

  10.   

     业务类中应该有个 Dao 对象, 你要从容器中获取 业务对象 对Dao进行初始化
      

  11.   

    如果是没有dao的话,那action也就没必要用代理啊,楼主试试不用代理会怎么样?
      

  12.   

    改成JSP虽然好用,制御不好整了!先放一下。