相信写日志等操作都需要用到html文本编辑器。我在用fckeditor2.6的时候出现了几个问题。比较纠结的问题就是上传功能就是不成功。查了好多网站终于解决了。说下我的问题。由于我用的是struts2加hibernate3.3开发的,没有整合spring。
首先去http://sourceforge.net/projects/fckeditor/files/FCKeditor.Java/2.6/下载fckeditor-java-demo-2.6.war下载DEMO示例就行了。如果你需要进行一些深入的设置的话,还是下fckeditor-java-2.6-src.zip。里面包含了demo示例了。
其实不需要修改很多东西,比如拿demo示例来说,只要解压出来,把fckeditor整个目录复制到自己项目的webroot目录下就好了(比如test/webroot)。打开自己项目里的web.xml文件。这里要注意了。由于加入了struts2,所以配置就要变下了,我之前的问题就出在这。下面是web.xml的配置。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Connector</servlet-name>
<servlet-class>net.fckeditor.connector.ConnectorServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Connector</servlet-name>
<url-pattern>/fckeditor/editor/filemanager/connectors/*</url-pattern>
</servlet-mapping>
</web-app>
这样就可以了。不需要配置其他的servlet了。
如果你的struts2中的url-pattern配置成/*的话,就会出现以下错误:
2010-12-20 16:50:46 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [Connector] in context with path [/graduation] threw exception [java.lang.IndexOutOfBoundsException: Index: 0, Size: 0] with root cause
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:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
fckeditor2.6和struts2整合的话。web.xml中struts2设置就不能是/*了。
如果还要更多复杂的fckeditor的设置。可以去网上找资料。有些个性化,还有上传图片每个用户都建个个人目录等等。都可以去网上查相关资料了。希望能帮人解决问题。都花了我一个下午的时间。。。