做到了一半,要用fckeditor,用的是struts2.1.8做的. 整合后,FCKEDITOR上传文件有问题,Console台提示:
2010-2-7 20:56:01 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet ConnectorServlet threw exception
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at net.fckeditor.connector.Dispatcher.doPost(Dispatcher.java:255)
at net.fckeditor.connector.ConnectorServlet.doPost(ConnectorServlet.java:128)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)看错误好像是fckEditor没有得到request....
在网上查过答案,说是因为struts2的filter拦截了fckeditor的servlet,然后是什么request被struts2修改了什么的.没看懂...
原本在web.xml文件中配置的struts2的filter的url-pattern是/*,如果要改动这里的话,要修改的地方很多,会很麻烦...试着在struts.xml文件里面添加一个指向FCKEDITOR的servlet的action配置,但是没有用.     想问一下,如果不改struts2的url-pattern,可以解决fckeditor上传文件的问题吗?PS:后来又想过自己再写一个Filter,在struts2的filter之前拦截,然后直接调用fckeditor的servlet...但是不知道具体要怎么写...先谢谢了...

解决方案 »

  1.   

    看了你的代码,我觉可能是你 上传东西太大,
     1. 首先检查你上传的页面:
         是否为:<form enctype="multipart/form-data">
     2. 查看你的 struts.xml,是否配置了:
      <constant name="struts.multipart.maxSize" value="15299996"/>
     value 可以设置上传最大大小。

    如果说对了,请通知我!
      

  2.   

    不是这原因啊..我是用fckeditor来上传的,就一张小图片...肯定不是上传文件大小的问题..不过,还是谢谢你哈..
      

  3.   


    我没用过struts2 fck也很少用 不过网上说的意思大概是 在你上传文件之前 struts2过滤器使用了你request里的某些属性 可能fck那头就收不到了具体解决办法可看这个 我搜到的
    http://zhidao.baidu.com/question/124457310.html
      

  4.   

    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    数组越界
      

  5.   

    越界呀 你查出的的list是空的 但是你在后面去用了这个list  比如你取到一个list名为result,但是你用了result.get(0);  注:0是零。
      

  6.   

    应该是fck取数据的前就被strut2拦截到 struts.multipart.parser=jakarta JakartaMultiPartRequest
    里面处理去了,然后清空request的文件流对象。
    轮到fck的去读的时候已经读不到啦。也就是items为[],FileItem uplFile = items.get(0);这时就会抛出
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 具体原因我也在找,找到后联系你。
      

  7.   


    我也产生同样的问题
    Root cause of ServletException.
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at net.fckeditor.connector.Dispatcher.doPost(Dispatcher.java:255)
    at net.fckeditor.connector.ConnectorServlet.doPost(ConnectorServlet.java:128)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    Truncated. see log file for complete stacktrace
    解决否,请联系!
      

  8.   

    主要就是filter不可设置成/*, 不可用Struts2过滤所有请求。
    http://www.ijser.cn/?p=158