问题:执行List items = upload.parseRequest(request); 其中items获取不到值
1 HttpServletRequest request = ServletActionContext.getRequest(); 2 request.setCharacterEncoding("utf-8"); 3 4 boolean isMultipart = ServletFileUpload.isMultipartContent(request); 5 if (isMultipart) { 6 FileItemFactory factory = new DiskFileItemFactory(); 7 ServletFileUpload upload = new ServletFileUpload(factory); 8 upload.setHeaderEncoding("utf-8"); 9 List items = upload.parseRequest(request); 10 11 }
解答:
此情况是struts拦截器产生的。见代码
在struts.xml中加入配置
1 <bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" 2 name="myRequestParser" class="com.founder.ngoss.util.RequestParseWrapper" 3 scope="default" optional="true" /> 4 <constant name="struts.multipart.parser" value="myRequestParser" />
如果struts是比较旧的版本 constant name = "struts.multipart.handler",这个坑死了
写个自己的拦截器
1 public class RequestParseWrapper extends JakartaMultiPartRequest { 2 3 @Override 4 public void parse(HttpServletRequest request, String arg1) throws IOException { 5 if(!request.getRequestURI().equals("/xx/xx.action")){ 6 super.parse(request, arg1); 7 } 8 } 9 10 }
就可以完美解决了