如何显示Tomahawk FileInput控件的超出大小限制

Arc*_*hra 6 jsf file-upload tomahawk

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

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

我试过保持,<h:messages globalOnly="true"但没有显示任何东西.

我按照BalusC博客文章设置了我的上传内容.

Bal*_*usC 5

异常详细信息可通过以下方式在EL中找到:

#{requestScope['org.apache.myfaces.custom.fileupload.exception']}
Run Code Online (Sandbox Code Playgroud)

因此,将以下组件添加到页面即可

<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']}" />
Run Code Online (Sandbox Code Playgroud)

您最终可以创建一个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));
}
Run Code Online (Sandbox Code Playgroud)