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

 时间:2024-11-07 11:17:40

HttpServletRequest req= getRequest();HttpServletResponse resp= getResponse();DiskFileUploadfileUpload= newDiskFileUpload();fileUpload.setRepositoryPath(tempPath);Listitems= fileUpload.parseRequest(req); //items为空网上找了很多方法,但是不符合我的实际情况,需要做一些改动,网上的方法如下:

网上方案如下:

1、在struts.xml文件里添加如下代码,其中指向的com.test.aop.RequestParseWrapper的类文件,是自定义的servlet文件,转换request恽贴淑溪类型。<beantype="org.apache.s。truts2.dispatcher.multipart.MultiPartRequest"name="multipartRequestParser"class="com.test.aop.RequestParseWrapper"scope="default"optional="true"/><constantname="struts.multipart.handler"value="multipartRequestParser"/>

2、com.test.aop.RequestParseWrapper类文件内容如下:publicclassRequestParseWrapperextendsJakartaMultiPartRequest{@Overridepublicvoidparse(HttpServletRequest servletRequest,String saveDir) throwsIOException{}}重写父类方法,但方法什么都不做。

我的实际情况解决方案:

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

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

3、publicclassRequestParseWrapperextendsJakartaMultiPartRequest{@Overrid髫潋啜缅epublicvoidparse(HttpServletRequest servletRequest,String saveDir) throwsIOException{String url= servletRequest.getRequestURL().toString();String urlAction= url.substring(url.indexOf("!")+1); //截取请求名if(!"attachmentUpload.action".equals(urlAction)){//非指定请求文件上传,调用父类parse方法,否则什么都不做super.parse(servletRequest, saveDir);}}}

  • 查看dll中的函数(方法)
  • linux怎么查看磁盘空间
  • 第五人格雇佣兵天赋加点攻略
  • Altium designer集成库的制作,PCB库和原理图库
  • 热门搜索
    泡酒配方大全 吉利博瑞怎么样 春天的古诗大全300首 夫妻吵架怎么办 黑鱼怎么做好吃 豆奶视频app最新版下载方法 图纸折叠方法 高中物理公式大全 狮子头的家常做法 南瓜的18种家常做法