if ((contentType != null) &&
(contentType.startsWith("multipart/form-data")) &&
(method.equalsIgnoreCase("POST"))) {
isMultipart = true;
//initialize a MultipartRequestHandler
MultipartRequestHandler multipart = null;
//get an instance of ActionServletWrapper
ActionServletWrapper servlet;
if (bean instanceof ActionForm) {
servlet = ((ActionForm) bean).getServletWrapper();
} else {
throw new ServletException("bean that's supposed to be " +
"populated from a multipart request is not of type " +
"\"org.apache.struts.action.ActionForm\", but type " +
"\"" + bean.getClass().getName() + "\"");
}
String multipartClass = (String)
request.getAttribute(Action.MULTIPART_KEY);
request.removeAttribute(Action.MULTIPART_KEY);
if (multipartClass != null) {
//try to initialize the mapping specific request handler
try {
multipart = (MultipartRequestHandler) Class.forName(multipartClass).newInstance();
}
catch (ClassNotFoundException cnfe) {
servlet.log("MultipartRequestHandler class \"" +
multipartClass + "\" in mapping class not found, " +
"defaulting to global multipart class");
}
catch (InstantiationException ie) {
servlet.log("InstantiaionException when instantiating " +
"MultipartRequestHandler \"" + multipartClass + "\", " +
"defaulting to global multipart class, exception: " +
ie.getMessage());
}
catch (IllegalAccessException iae) {
servlet.log("IllegalAccessException when instantiating " +
"MultipartRequestHandler \"" + multipartClass + "\", " +
"defaulting to global multipart class, exception: " +
iae.getMessage());
}
}
if (multipart == null) {
//try to initialize the global multipart class
try {
multipart = (MultipartRequestHandler) Class.forName(servlet.getMultipartClass()).newInstance();
}
catch (ClassNotFoundException cnfe) {
throw new ServletException("Cannot find multipart class \"" +
servlet.getMultipartClass() + "\"" +
", exception: " + cnfe.getMessage());
}
catch (InstantiationException ie) {
throw new ServletException("InstantiaionException when instantiating " +
"multipart class \"" + servlet.getMultipartClass() +
"\", exception: " + ie.getMessage());
}
catch (IllegalAccessException iae) {
throw new ServletException("IllegalAccessException when instantiating " +
"multipart class \"" + servlet.getMultipartClass() +
"\", exception: " + iae.getMessage());
}
}
//set the multipart request handler for our ActionForm
//if the bean isn't an ActionForm, an exception would have been
//thrown earlier, so it's safe to assume that our bean is
//in fact an ActionForm
((ActionForm) bean).setMultipartRequestHandler(multipart);
//set servlet and mapping info
servlet.setServletFor(multipart);
multipart.setMapping((ActionMapping)
request.getAttribute(Action.MAPPING_KEY));
request.removeAttribute(Action.MAPPING_KEY);
//initialize request class handler
multipart.handleRequest(request);
//retrive form values and put into properties
multipartElements = multipart.getAllElements();
names = multipartElements.keys();
}
if (!isMultipart) {
names = request.getParameterNames();