2011-05-10 6 views
5

Estoy usando el control <t:inputFileUpload /> de la biblioteca Tomahawk con JSF1.1. Mis filtros de extensión y el formulario se configuran en consecuencia para permitir que se cargue un archivo de 3 MB de tamaño máximo. Pero el problema es que si un archivo tiene más de 3 MB, el formulario no se envía pero se muestra de nuevo, y no puedo configurar <h:message> para ello.Cómo mostrar el límite de tamaño excedido para el control Tomahawk FileInput

Entonces, ¿cómo le digo al usuario que la carga del archivo ha fallado.

He intentado guardar <h:messages globalOnly="true" pero no se muestra nada.

He seguido BalusC publicación de blog para configurar mis cargas.

Respuesta

4

El detalle excepción está disponible en EL por

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

Por lo tanto, la adición de los siguientes componentes a la página debe hacerlo

<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']}" /> 

eventualmente podría crear un PhaseListener que la convierte en un FacesMessage. Haga lo siguiente en beforePhase() de 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

Gracias por una respuesta tan detallada. Sin embargo, siento decir que obtengo # {requestScope ['org.apache.myfaces.custom.fileupload.exception']} como nulo cuando encuentro una excepción de tamaño de archivo. Estoy usando JSF: 1.1_02-b08 –

Cuestiones relacionadas