2011-05-10 94 views
5

我正在使用<t:inputFileUpload />控制带有JSF1.1的Tomahawk库。 我的扩展筛选器和表单相应地设置为允许上传最大大小为3 MB的文件。但问题是如果一个文件超过3 MB的表单不提交,但再次显示,我不能为它设置任何<h:message>如何显示Tomahawk FileInput控件超出的大小限制

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

我试过保留<h:messages globalOnly="true"但没有任何显示。

我已按照BalusC的博客文章设置我的上传。

回答

4

异常详细信息是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()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)); 
} 
+0

谢谢你的详细回复。然而,我很抱歉地说当我遇到文件大小异常时,我得到了#{requestScope ['org.apache.myfaces.custom.fileupload.exception']}为空。我正在使用JSF:1.1_02-b08 – 2011-05-10 15:30:32