在集成ewebeditor到项目中时出了问题,不能上传图片,开始以为是配置没有配置好,找了一遍后发现没有问题,后来在网上找到了两篇文章。
http://hi.baidu.com/hsazj/blog/item/33f032119404251bb9127b89.html
和
http://aiesechugo.spaces.live.com/blog/cns!60E32E617081B7AA!6430.entry
很是奇怪,两人都说解决了这个问题,不知道他们是怎么解决的,其实两个人都只解决了一半。现在把我修改的问题做一个详细配置说明。
首先:也是很重要的,在web.xml中,为了防止出现struts出现不能使用的意外情况,配置时如下:
<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>
正如其中一人说所,struts2把说有的都请求都出了一遍。处理代码如下:
try {
prepare.createActionContext(request, response);
prepare.assignDispatcherToThread();
prepare.setEncodingAndLocale(request, response);
request = prepare.wrapRequest(request);
ActionMapping mapping = prepare.findActionMapping(request, response);
if (mapping == null) {
boolean handled = execute.executeStaticResourceRequest(request, response);
if (!handled) {
chain.doFilter(request, response);
}
} else {
execute.executeAction(request, response, mapping);
}
} finally {
prepare.cleanupRequest(request);
}
这就就造成我们无法访问的最终原因,当图片上传时其实是被struts截获了,并且出了,这样ewebeditor后台处理时就会出现一定的问题,导致最终不能上传。
还有一个原因是ewebeditor使用的.jsp文件来上传,那么就和struts在处理的时候有冲突,当然,按第一种方法最简单,只需要在try{}catch之前加上判断,如果是图片上传,那么就不处理。但是jsp后坠多少有点不好(我也没有去测试,我是改过来的。为的是免得以后和jsp造成冲突),个人认为,最好的解决方案是,把后缀改下,当然要改的地方也就多了。具体改的方法见连接。