upload.parseRequest(request)得到的List为空

2025-09-23 15:52:27

1、1、在struts.xml文件里添加如下代码,其中指向的com.test.aop.RequestParseWrapper的类文件,是自定义的servlet文件,转换request类型。

<bean type="org.apache.s。truts2.dispatcher.multipart.MultiPartRequest" name="multipartRequestParser" class="com.test.aop.RequestParseWrapper" scope="default" optional="true" />

<constant name="struts.multipart.handler" value="multipartRequestParser" />

2、2、com.test.aop.RequestParseWrapper类文件内容如下:

public class RequestParseWrapper extends JakartaMultiPartRequest{

@Override

public void parse(HttpServletRequest servletRequest,String saveDir) throws IOException{}

}

重写父类方法,但方法什么都不做。

1、1、缺陷:

     根据以上方法,可以得到upload.parseRequest(request)返回的list,但是后来发现一个问题,这样改动之后,我其他模块用到多文件上传的地方,没办法实现新建功能了,因为jsp页面的参数无法传到action。原因:我的jsp页面也有多文件上传,但使用的是上传组件,表单中enctype="multipart/form-data",request被改动,所以造成参数传递失败。

2、2、解决方案:

     修改com.test.aop.RequestParseWrapper类文件内容,如果是指定的用此方法的请求用修改过的request,如果是其他的请求用默认的request处理方式,即父类(JakartaMultiPartRequest)方法JakartaMultiPartRequest。具体修改过的代码如下:

3、public class RequestParseWrapper extends JakartaMultiPartRequest{

@Override

public void parse(HttpServletRequest servletRequest,String saveDir) throws IOException{

String url = servletRequest.getRequestURL().toString();

String urlAction = url.substring(url.indexOf("!")+1); //截取请求名

if(!"attachmentUpload.action".equals(urlAction)){

  //非指定请求文件上传,调用父类parse方法,否则什么都不做

super.parse(servletRequest, saveDir);

}

}

 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢