作者:nnnnllll | 来源:互联网 | 2023-10-13 13:43
struts2上传文件ServletFileUpload取tem0truts上传为空的原因是struts2拦截器对混合表单进行拦截,将混合表单的request转换为了
struts2上传文件ServletFileUpload取tem=0
truts上传为空的原因是struts2拦截器对混合表单进行拦截,将混合表单的request转换为了普通表单的请求。
解决办法:
重写struts2拦截器对request的parser操作,具体实现如下
在struts2.xml添加如下代码:
type="org.apache.struts2.dispatcher.multipart.MultiPartRequest"
name="myRequestParser" class="org.app.myRequestParser.MyRequestParser" scope="default" optional="true" />
"struts.multipart.parser" value="myRequestParser" />
class是自定义的类,里面可以什么都没有,但一定要重新parser函数。里面不写任何东西,如下:
public class MyRequestParser extends JakartaMultiPartRequest{@Override public void parse(HttpServletRequest servletRequest, String arg1) throws IOException {}
}
但是,在重写了parser函数后会导致struts2的上传无效;以下解决:
@Override public void parse(HttpServletRequest request, String arg1) throws IOException { String url = request.getRequestURI().toString();if(url.indexOf("uploadWebApp.action")>0){}else{ super.parse(request, arg1); } }