2012-11-30 74 views
5

我有一個comandButton,它調用confirmDialog,它必須消除一個用戶,但它永遠不會調用actionListener中的方法。Primefaces confirmDialog在動作中沒有做任何事情監聽器

這是代碼:

<p:dialog id="dialogEditar" widgetVar="dialogEditar" header="#{bundle_usuarios.usuarios_titulo_edicion}" resizable="false"> 
    <p:panelGrid id="panelEditar" 
     <p:row> 
      <p:column> 
       <p:commandButton id="btModificar" type="submit" actionListener="#{usuariosMB.modificarUsuario()}" 
          value="#{bundle_general.general_modificar}" update="formEditar" rendered="#{usuariosMB.permisoCtMenu}"/> 
      </p:column> 
      <p:column colspan="7"> 
       <p:commandButton id="btEliminar" type="button" onclick="confirmation.show()" 
           value="#{bundle_general.general_eliminar}"/> 
      </p:column> 
     </p:row> 
    </p:panelGrid> 
    <p:confirmDialog appendToBody="true" id="confirmDialog" message="#{bundle_usuarios.usuarios_confirma}" 
        header="#{bundle_usuarios.usuarios_titulo_confirma_eliminar}" severity="alert" widgetVar="confirmation"> 
     <p:commandButton id="confirm" type="submit" value="#{bundle_usuarios.usuarios_aceptar_eliminar}" 
         update="dialogEditar, formEditar" oncomplete="confirmation.hide()" 
         actionListener="#{usuariosMB.eliminarUsuario()}" rendered="#{usuariosMB.permisoCtMenu}" /> 
     <p:commandButton id="decline" value="#{bundle_usuarios.general_cancelar}" onclick="confirmation.hide()" type="button" /> 
    </p:confirmDialog> 
</p:dialog> 

如果我把相同的代碼,而無需confirmDialog,它運行並刪除該用戶沒有任何問題。

與成功運行的代碼是下一個:

<p:dialog id="dialogEditar" widgetVar="dialogEditar" header="#{bundle_usuarios.usuarios_titulo_edicion}" resizable="false"> 
    <p:panelGrid id="panelEditar" 
     <p:row> 
      <p:column> 
       <p:commandButton id="btModificar" type="submit" actionListener="#{usuariosMB.modificarUsuario()}" 
          value="#{bundle_general.general_modificar}" update="formEditar" rendered="#{usuariosMB.permisoCtMenu}"/> 
      </p:column> 
      <p:column colspan="7"> 
       <p:commandButton id="btEliminar" type="submit" actionListener="#{usuariosMB.eliminarUsuario()}" value="#{bundle_general.general_eliminar}" update="dialogEditar, formEditar" rendered="#{usuariosMB.permisoCtMenu}"/> 
      </p:column> 
     </p:row> 
    </p:panelGrid> 
</p:dialog> 

另一件事,當我點擊commandButon id爲「確認」,那麼confirmDialog從未dissapear和它保持擋在窗外。

如果你需要更多的細節,說我需要。 請問,有什麼建議? 謝謝!

回答

4

如果你的對話框放置在h:form中,從這個表單執行並在對話框中放置一個h:form是一個很好的練習。你仍然可以通過widgetVar訪問

<h:form> 
.... 
</h:form> 

<p:dialog> 

<h:form> 
... 
<p:commandButton /> 
<h:form> 

</p:dialog> 
+0

明天我會看到我的代碼,對不起,但我不得不做其他事情,我無法檢查它。謝謝! – Darkfalk

+1

這是我的錯誤,謝謝你的朋友,很抱歉,以後再回答你。 :S – Darkfalk

+0

@Darkfalk我很樂意提供幫助 – HRgiger

3

更改命令按鈕,以一個普通按鈕

<p:commandButton id="confirm" type="submit" value="Your Command Text"/> 

然後在單擊事件調用對話框

<p:commandButton id="confirm" type="button" value="Your Command Text" onclick="dialog.show()"/> 

dialog是你的對話框的widget var

然後,您可以從確認對話框中的命令按鈕執行刪除操作。

看起來你已經做了這個改變。你仍然遇到同樣的問題?

+0

我只是嘗試它,但我有同樣的結果。 – Darkfalk

+0

然後,您必須缺少HRgiger回答的表單。確保你不把表單放在窗體中。 –