2011-05-10 14 views
5

Sto utilizzando il controllo <t:inputFileUpload /> della libreria Tomahawk con JSF1.1. I miei filtri di estensione e modulo sono impostati di conseguenza per consentire il caricamento di un file di dimensioni massime di 3 MB. Ma il problema è che se un file è più di 3 MB il modulo non viene inviato ma viene mostrato di nuovo, e non posso impostare alcun <h:message> per questo.Come visualizzare il limite di dimensioni superato per Tomahawk File Controllo ingresso

Quindi, come faccio a comunicare all'Utente che il caricamento del file non è riuscito.

Ho provato a mantenere <h:messages globalOnly="true" ma non viene mostrato nulla.

Ho seguito il post del blog BalusC per l'impostazione dei miei caricamenti.

risposta

4

Il dettaglio eccezione è disponibile in EL da

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

Quindi, aggiungendo la seguente componente alla pagina dovrebbe farlo

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

Si potrebbe eventualmente creare un PhaseListener che lo trasforma in un FacesMessage. Effettuare le seguenti operazioni in beforePhase() di 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

Grazie per una risposta così dettagliato. Tuttavia, mi dispiace dire che sto ricevendo # {requestScope ['org.apache.myfaces.custom.fileupload.exception']} come null quando riscontro un'eccezione dimensione del file. Sto usando JSF: 1.1_02-b08 –

Problemi correlati