5

ユーザーを排除する必要があるcomandButtonを呼び出す がconfirmDialogありますが、actionListener にあるメソッドを呼び出すことはありません。

これはコードです:

<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>

もう 1 つのことは、id="confirm" で commandButon をクリックすると、confirmDialog が消えることはなく、ウィンドウ内でブロックされたままになります。

詳細が必要な場合は、どちらが必要か教えてください。何か提案はありますか?ありがとう!

4

2 に答える 2

4

ダイアログが ah:form に配置されている場合は、このフォームから実行し、ダイアログ内に ah:form を配置することをお勧めします。それでも、widgetVar 経由でアクセスできます

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

<p:dialog>

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

</p:dialog>
于 2012-11-30T10:07:12.173 に答える
3

コマンドボタンを通常のボタンに変更します

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

次に、クリックイベントでダイアログを呼び出します

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

dialogwidget varダイアログのです。

次に、確認ダイアログ内のコマンドボタンから削除操作を実行できます。

すでにこの変更を行ったようです。あなたはまだ同じ問題を抱えていますか?

于 2012-11-30T10:02:27.073 に答える