我在我的Struts 1.2应用程序中添加了一个过滤器,该过滤器在请求发送到ActionForm之前被触发。我的jsp中有一个multipart / form-data,所以我使用apache.commons.FileUpload来解析请求,并使用ServletFileUpload类的parseRequest(HttpServletRequest)方法获取我的特定请求参数。
处理完成后,请求被传递给actionForm,表单中没有数据。我知道请求只能被解析一次,因为我已经在我的过滤器中解析了它,我没有在我的表单中获取数据。
即使在过滤器中解析请求后,是否有任何替代方式可以在表单中提供数据。
这是我在我的过滤器中使用的代码
List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(servletRequest);
for (FileItem item : multiparts) {
if (item.isFormField()) {
String name = item.getFieldName();
stripXSS(item.getString());
}
}
我尝试的其他代码是:
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(servletRequest);
while(iterator.hasNext()){
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if(item.isFormField()){
String name = item.getFieldName();
String value = Streams.asString(stream);
stripXSS(item.getString());
}
}
但这也给出了同样的问题。