前天在做分类图标管理的时候,需要同时上传两个图标。但在处理的时候老报错,在google上找到有用的信息:
File upload support has been rebuilt to allow for multiple files with the same HTTP parameter name. Besides "cos" and "pell" support, "jakarta" support has been added, utilizing the Commons-FileUpload library. Only "jakarta" supports multiple files with the same HTTP parameter name. In future versions "jakarta" may become the default upload library, replacing "pell",作者还说将webwork.properties的webwork.multipart.parser设为com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest就可以了。
再看一下我们项目的webwork.properties,真是晕死,人家webwork已经调jakata设为默认上传组件了,我们的webwork.properties竟然还硬要设为pell,这不是蓄意谋杀么?
当时图个爽快,按照这样仁兄的设置,果然成功了。今天早上回来看了一下webwork的代码,发现有点不对路。Webwork里的com.opensymphony.webwork.dispatcher.multipart.MultiPartRequestWrapper里面有几行代码,是判断使用那个上传组件的。以下是摘抄:
if (request instanceof MultiPartRequest) {
multi = (MultiPartRequest) request;
} else {
String parser = Configuration.getString(WebWorkConstants.WEBWORK_MULTIPART_PARSER);
// If it's not set, use Jakarta
if (parser.equals("")) {
log.warn("Property webwork.multipart.parser not set." +
" Using com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest");
parser = "com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest";
}
// legacy support for old style property values
else if (parser.equals("pell")) {
parser = "com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest";
} else if (parser.equals("cos")) {
parser = "com.opensymphony.webwork.dispatcher.multipart.CosMultiPartRequest";
} else if (parser.equals("jakarta")) {
parser = "com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest";
}
为什么将webwork.multipart.parser设为com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest也是可以的?理论上应该设为jakata才对,除非在if子句中已经执行了,跳过了下面的else子句。
File upload support has been rebuilt to allow for multiple files with the same HTTP parameter name. Besides "cos" and "pell" support, "jakarta" support has been added, utilizing the Commons-FileUpload library. Only "jakarta" supports multiple files with the same HTTP parameter name. In future versions "jakarta" may become the default upload library, replacing "pell",作者还说将webwork.properties的webwork.multipart.parser设为com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest就可以了。
再看一下我们项目的webwork.properties,真是晕死,人家webwork已经调jakata设为默认上传组件了,我们的webwork.properties竟然还硬要设为pell,这不是蓄意谋杀么?
当时图个爽快,按照这样仁兄的设置,果然成功了。今天早上回来看了一下webwork的代码,发现有点不对路。Webwork里的com.opensymphony.webwork.dispatcher.multipart.MultiPartRequestWrapper里面有几行代码,是判断使用那个上传组件的。以下是摘抄:
if (request instanceof MultiPartRequest) {
multi = (MultiPartRequest) request;
} else {
String parser = Configuration.getString(WebWorkConstants.WEBWORK_MULTIPART_PARSER);
// If it's not set, use Jakarta
if (parser.equals("")) {
log.warn("Property webwork.multipart.parser not set." +
" Using com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest");
parser = "com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest";
}
// legacy support for old style property values
else if (parser.equals("pell")) {
parser = "com.opensymphony.webwork.dispatcher.multipart.PellMultiPartRequest";
} else if (parser.equals("cos")) {
parser = "com.opensymphony.webwork.dispatcher.multipart.CosMultiPartRequest";
} else if (parser.equals("jakarta")) {
parser = "com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest";
}
为什么将webwork.multipart.parser设为com.opensymphony.webwork.dispatcher.multipart.JakartaMultiPartRequest也是可以的?理论上应该设为jakata才对,除非在if子句中已经执行了,跳过了下面的else子句。