如果我理解正确,我认为你想做这样的事情:
<s:fielderror>[some reference to a content type error]</s:fielderror>
<s:fielderror>[some reference to a max size error]</s:fielderror>
这样您就可以分别/不同地渲染它们。
目前这是不可能的,因为<s:fielderror/>
只需要字段名称。
您不能以这种方式分隔一个字段的多个错误。
此外,查看 中方法的源代码,首先检查最大大小,如果检查失败,则会设置错误。如果最大大小已经失败,则代码不会继续检查允许的类型。acceptFile
FileUploadInterceptor
353 } else if (maximumSize != null && maximumSize < file.length()) {
354 String errMsg = getTextMessage(action, "struts.messages.error.file.too.large", new Object[]{inputName, filename, file.getName(), "" + file.length()}, locale);
355 if (validation != null) {
356 validation.addFieldError(inputName, errMsg);
357 }
358
359 LOG.warn(errMsg);
360 } else if ((!allowedTypesSet.isEmpty()) && (!containsItem(allowedTypesSet, contentType))) {
361 String errMsg = getTextMessage(action, "struts.messages.error.content.type.not.allowed", new Object[]{inputName, filename, file.getName(), contentType}, locale);
362 if (validation != null) {
363 validation.addFieldError(inputName, errMsg);
364 }
365
366 LOG.warn(errMsg);
367 }
因此,您一次应该只得到其中一个错误。