我正在使用<t:inputFileUpload />
JSF1.1 控制 Tomahawk 库。我的扩展过滤器和表单已相应设置,以允许上传最大大小为 3 MB 的文件。但问题是如果文件超过 3 MB,则表单不会提交但会再次显示,我无法<h:message>
为其设置任何内容。
那么我如何告诉用户文件上传失败。
我试过保留<h:messages globalOnly="true"
,但什么都没有显示。
我已关注BalusC博客文章来设置我的上传。
我正在使用<t:inputFileUpload />
JSF1.1 控制 Tomahawk 库。我的扩展过滤器和表单已相应设置,以允许上传最大大小为 3 MB 的文件。但问题是如果文件超过 3 MB,则表单不会提交但会再次显示,我无法<h:message>
为其设置任何内容。
那么我如何告诉用户文件上传失败。
我试过保留<h:messages globalOnly="true"
,但什么都没有显示。
我已关注BalusC博客文章来设置我的上传。
异常详情可在 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));
}