Cómo mostrar el límite de tamaño excedido para el control Tomahawk FileInput

Estoy utilizando <t:inputFileUpload /> control de la biblioteca Tomahawk con JSF1.1. Mis filtros de extensión y el formulario están configurados en consecuencia para permitir que se cargue un archivo de tamaño máximo de 3 MB. 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 ninguno. <h:message> para ello .

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

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

he seguido BalusC entrada de blog para configurar mis cargas.

preguntado el 10 de mayo de 11 a las 14:05

1 Respuestas

El detalle de la excepción está disponible en EL por

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

Entonces, agregar el siguiente componente a la página debería 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ías crear un PhaseListener lo que lo convierte en un FacesMessage. Haz lo siguiente en beforePhase() of 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));
}

contestado el 10 de mayo de 11 a las 18:05

Gracias por una respuesta tan detallada. Sin embargo, lamento 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 - Archan Mishra

esto funciona, uso validade en js y backend con este código. stackoverflow.com/questions/10508477/… - Artur Todeschini

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.