2012-06-05 69 views
0

我有這個模塊在我的web應用程序,我需要更新來目錄。禁用按鈕並顯示加載圖像時處理JSF

的想法是禁用h:commandButton顯示一個h:graphicImage,兩個動作都應該被點擊的按鈕後發生的權利。 最後,當更新過程已經結束了它應該做的其他方式,隱藏h:graphicImage使h:commandButton但此時也展現出標籤h:outputText,上面寫着:「更新成功」或「更新失敗」。

在我的代碼中的問題是,圖像和標籤出現在過程完成後,我無法找到方法來做我上面描述的。

我在哪裏或我在想什麼?,

乾杯。

<a4j:commandButton id="btnActualiza" value="Actualizar catálogos" 
         render="messageCatalogos actualizacionCorrecta 
         @this imgProcesando" 
         onclick="this.disabled=true;" 
         oncomplete="this.disabled=false" 
         actionListener="#{administrationBean.doImgProcesandoVisible}" 
         action="#{administrationBean.doActualizaCatalogos}"/> 
    <a4j:outputPanel id="imgProcesando"> 
     <h:graphicImage rendered="#{administrationBean.imgProcesandoRendered}" 
         url="img/imgLoading.gif"/> 
    </a4j:outputPanel> 
    <h:panelGroup/> 
    <h:panelGroup/> 
    <a4j:outputPanel id="actualizacionCorrecta" style="font-size: 14px; color: #D17100"> 
     <h:outputText rendered="#{administrationBean.actualizacionCorrectaLabelRendered}" 
         value="Actualización correcta !"/> 
     <h:outputText rendered="#{administrationBean.actualizacionFalloLabelRendered}" 
         value="Fallo la actualización !"/> 
    </a4j:outputPanel> 

UPDATE

我開發環境:

  • 鑽嘴魚科2.1.6
  • RichFaces的4.1.0.Final
  • 的Tomcat 7.0.14(測試)/ 7.0的Tomcat .22(prod)

回答

3

您需要通過JS來顯示和隱藏圖像。

<h:graphicImage id="loading" url="img/imgLoading.gif" style="display:none" /> 

<a4j:commandButton ... 
    onbegin="this.disabled=true; $('#formId\\:loading').show()" 
    oncomplete="this.disabled=false; $('#formId\\:loading').hide()" 
/> 
+0

謝謝您的回答。我試過了,但代碼'$('#loading')。show()'不會使圖像顯示出來。還有另一種方法可以做到嗎?可能類似於getDocumentById,我不知道JS,但我已經看到這是獲取組件引用的方式...... – BRabbit27

+1

也許RichFaces在noconflict模式下運行jQuery。使用'jQuery('#loading')'而不是$('#loading')'。否則,你總是可以使用好的'ol'document.getElementById('loading')'並分別設置'.style.display ='block''和'.style.display ='none''。 – BalusC

+0

哦,如果圖像在表單裏面,你也需要包含表單ID。它最終是圖像的客戶端ID。檢查生成的HTML源代碼。 – BalusC