作者: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); } }