相信写日志等操作都需要用到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的设置。可以去网上找资料。有些个性化,还有上传图片每个用户都建个个人目录等等。都可以去网上查相关资料了。希望能帮人解决问题。都花了我一个下午的时间。。。