2014-10-10 78 views
0

我是一個出現在對話框中的上傳器。所以,當我上傳我的文件成功;我希望我的dialgo關閉,如果上傳後出現錯誤,我不想關閉對話框。所以,我的上傳工作,但是當我要關閉我的對話框的時候,我收到了來自firebur的消息:ReferenceError:args沒有被定義。 這裏是我的對話框代碼:爲什麼當我在primefaces中使用fileupload時,我可以做ajax調用?

<p:dialog maximizable="true" 
      minHeight="400" 
      minWidth="400" 
      id="dialogCarga" 
      header="Cargar gestores" 
      widgetVar="gestorCargarDialog" 
      resizable="false" 
      modal="true"> 
    <p:ajax event="close" 
      listener="#{gestorMB.handleClose}" 
      update="agregarGestor"/> 
    <h:form id="cargarGestor"> 
     <p:growl id="growl2" 
       showDetail="false" /> 
     <table> 
      <tr> 
       <td align="left"> 
      <h:outputText id="layoutUpd" 
          value="Subir archivo:" /> 
      </td>            
      <td align="left"> 
      <p:fileUpload invalidSizeMessage="El archivo tiene un tama&ntilde;o superior al v&aacute;lido" 
          label="Escoger" cancelLabel="Cancelar" 
          uploadLabel="Cargar archivo" 
          fileUploadListener="#{gestorMB.handleFileUpload}" 
          id="SigUPD" 
          oncomplete="handleCargarGestRequest(args)" 
          invalidFileMessage="Tipo de archivo inv&aacute;lido, solo se aceptan archivos con extensi&oacute;n csv." process="@this" 
          allowTypes="/(\.|\/)(csv)$/" sizeLimit="20971520" 
          update=":gestorForm:, erroresCarga, growl2, SigUPD" 
          fileLimit="1" 
          fileLimitMessage="Favor de cargar un archivo a la vez.">          
      </p:fileUpload> 
      </td>             
      </tr> 
      <tr> 
       <td align="left"> 
      <p:outputPanel id="layoutGestores"> 
       <a href="#{gestorMB.layoutLinkGestores}" 
        target="_blank">Descargar formato de carga de gestores.</a> 
      </p:outputPanel> 
      * Nota: Todos los campos del archivo son obligatorios menos la extensi&oacute;n. 
      El archivo debe estar libre de errores para poder cargar los gestores. 
      </td>        
      </tr> 
     </table> 
     <p:dataTable id="erroresCarga" 
        value="#{gestorMB.msgError}" 
        var="element" 
        paginator="true" 
        rows="10" 
        emptyMessage="No existen errores" 
        paginatorTemplate="{CurrentPageReport} 
             {FirstPageLink} 
             {PreviousPageLink} 
             {PageLinks} 
             {NextPageLink} 
             {LastPageLink} 
             {RowsPerPageDropdown}" 
        rowsPerPageTemplate="10,20,40" > 
      <f:facet name="header"> 
       Errores en el archivo #{gestorMB.nombreArchivo} 
      </f:facet>  
      <p:column headerText="Error"> 
       #{element} 
      </p:column>              
     </p:dataTable>      
    </h:form> 
</p:dialog> 

,這裏是我從文件上傳的方法使用,關閉對話框的代碼: RequestContext.getCurrentInstance()addCallbackParam(Constantes.EXITO2,Constantes.TRUE)。

最後,這裏是我的js,我關閉對話框:

function handleCargarGestRequest(args) { 
    alert("handleCargarGestRequest: " + args.exito); 
    if (args.exito) { 
     gestorCargarDialog.hide(); 
    } else { 
     gestorCargarDialog.show(); 
    } 
} 

我已經嘗試使用handleCargarGestRequest(XHR,狀態參數),它doesn't工作。我知道xhr沒有定義。 有誰知道爲什麼我可以在完成上傳後關閉對話框? 在此先感謝。

回答

0

認爲你可以做(​​與PF 4和新語法)

oncomplete="if(args &amp;&amp; !args.validationFailed) {PF('gestorCargarDialog').hide();}" 

和豆(在錯誤的情況下)

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Errormessage...")); 
FacesContext.getCurrentInstance().validationFailed(); 
相關問題