百度编辑器的运用可以参考我之前写的一篇文章,在java项目中加入百度富文本编辑器。这篇文章是以maven+spring mvc项目进行的,总得来说配置比较简单,但是如果是想在strus2项目中配置ueditor编辑器,需要注意以下细节。
1.保证ueditor所需要的包都导入到了项目,如果是maven项目,参考上述文章,如果是普通项目,将ueditor/jsp/lib下的包放入web-inf的lib包中。
2.在上传图片的时候,若提示“未找到上传文件”且其他地方配置无误,则需要做一下拦截器的配置。新建一个UeditorFilter,继承自struts2拦截器,代码如下。
package cn.wonyen.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; public class UeditorFilter extends StrutsPrepareAndExecuteFilter { public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; //不过滤的url String url = request.getRequestURI(); // System.out.println(url); if (url.contains("/ueditor1_4_3/jsp/controller.jsp")) { //注意路径 chain.doFilter(req, res); }else{ super.doFilter(req, res, chain); } } }
并且,由于这个拦截器继承自StrutsPrepareAndExecuteFilter拦截器,所以原本的web.xml中的关于struts的拦截器都可以注释掉了,否则UeditorFilter 不会起到作用。注释掉的web.xml如下。
<filter> <filter-name>ueditorFilter</filter-name> <filter-class>cn.wonyen.filter.UeditorFilter</filter-class> </filter> <filter-mapping> <filter-name>ueditorFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> <!-- <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>/*</url-pattern> --> <!-- </filter-mapping> --> <!-- <filter> --> <!-- <filter-name>struts-prepare</filter-name> --> <!-- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> --> <!-- </filter> --> <!-- <filter-mapping> --> <!-- <filter-name>struts-prepare</filter-name> --> <!-- <url-pattern>/*</url-pattern> --> <!-- </filter-mapping> --> <!-- <filter> --> <!-- <filter-name>struts-execute</filter-name> --> <!-- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> --> <!-- </filter> --> <!-- <filter-mapping> --> <!-- <filter-name>struts-execute</filter-name> --> <!-- <url-pattern>/*</url-pattern> --> <!-- </filter-mapping> -->
3.如果图片可以上传,但是上传完以后显示在页面上的是图片的名称,而不是回显图片本身,则是图片上传路径配置的错误。如下图所示。
注意如下两个位置的配置。config.json下的imageUrlPrefix和imagePathFormat。这两个位置合起来构成图片的真实路径。(若是springmvc项目,两项可以合起来放在imagePathFormat项中配置。
imageUrlPrefix是前缀,我们填写项目名称就好,而imagePathFormat是图片的路径格式,可根据实际情况来填写。一般我们将图片放置于ueditor/jsp/upload/image文件夹下,并且按照时间的创建子文件夹。这两项配置好以后的代码如下:
"imageUrlPrefix": "/wycrm/", /* 图片访问路径前缀 */
"imagePathFormat": "/ueditor1_4_3/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
经过以上的一些配置,一般来说图片就可以正常的上传和显示了。