>我正在使用JSF1.1 <t:inputFileUpload />
对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));
}