6

我正在使用<t:inputFileUpload />JSF1.1 控制 Tomahawk 库。我的扩展过滤器和表单已相应设置,以允许上传最大大小为 3 MB 的文件。但问题是如果文件超过 3 MB,则表单不会提交但会再次显示,我无法<h:message>为其设置任何内容。

那么我如何告诉用户文件上传失败。

我试过保留<h:messages globalOnly="true",但什么都没有显示。

我已关注BalusC博客文章来设置我的上传。

4

1 回答 1

5

异常详情可在 EL 中通过

#{requestScope['org.apache.myfaces.custom.fileupload.exception']}

因此,将以下组件添加到页面应该可以做到

<h:outputText value="File upload failed! #{requestScope['org.apache.myfaces.custom.fileupload.exception']}" 
    styleClass="error" rendered="#{not empty requestScope['org.apache.myfaces.custom.fileupload.exception']}" />

您最终可以创建一个PhaseListener将其转换为FacesMessage. beforePhase()执行以下操作PhaseId.RENDER_RESPONSE

Object fileuploadException = requestMap.get("org.apache.myfaces.custom.fileupload.exception");
if (fileuploadException != null) {
    facesContext.addMessage(null, new FacesMessage("File upload failed! " + fileuploadException));
}
于 2011-05-10T14:31:40.947 回答