【问题标题】:JSF Delete entity on DataTable with p:dialog [duplicate]JSF使用p:dialog删除DataTable上的实体[重复]
【发布时间】:2012-12-20 04:37:06
【问题描述】:

我目前正在处理 CRUD 表单,现在正在处理应该是最简单的最后一部分 - 删除。但我想在用户进行实际删除之前显示一个对话框。这就是我遇到 Primefaces 3.4 问题的地方。由于某种原因,我无法在 p:dialog 内的按钮中设置操作,ajax=false 失败。所以这就是我所做的:

<p:column headerText="#{msgs['action.delete']}"
                    styleClass="a-center">
    <p:commandButton icon="ui-icon-trash"
        oncomplete="confirmation.show()">
        <f:setPropertyActionListener
            target="#{marketingCodeBean.marketingCode}" value="#{code}"></f:setPropertyActionListener>
    </p:commandButton>
</p:column>

对话框:

<p:confirmDialog id="confirmDialog"
                message="#{msgs['message.marketingCode.confirmDelete']}"
                header="#{msgs['common.confirmDelete']}" severity="alert"
                widgetVar="confirmation">
    <p:commandButton id="confirm" value="#{msgs['common.yes']}"
        oncomplete="confirmation.hide()" update=":form:mktgCodeTable"
        actionListener="#{marketingCodeBean.remove}" />
    <p:commandButton id="decline" value="#{msgs['common.no']}"
        onclick="confirmation.hide()" type="button" />
</p:confirmDialog>

我知道 actionListener 不应该用于业务操作,但考虑到数据表和对话框,我想不出解决方法。关于如何在 p:confirmDialog 中的 p:commandButton 中设置 ajax=false 有什么想法吗?

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    一旦渲染,对话框的 HTML 输出将通过一些加载 JavaScript 重新定位到 HTML &lt;body&gt; 的末尾,以实现最佳的跨浏览器兼容覆盖/定位。但是,这意味着如果将它放在&lt;form&gt; 中,它将不再位于&lt;form&gt; 中,并且同步(非ajax)请求将不再起作用。这不完全是 actionactionListener 的问题。

    &lt;p:dialog&gt;(以及您似乎实际使用的&lt;p:confirmDialog&gt;)应该有自己的&lt;h:form&gt; 组件。

    <h:form>
        <p:dataTable>
            ...
        </p:dataTable>
    </h:form>
    ...
    <p:confirmDialog>
        <h:form>
            ...
        </h:form>
    </p:confirmDialog>
    

    【讨论】:

    • 你说得对,我忘了为 p:confirmDialog 创建一个单独的表单并将其包含在主表单中。再次感谢。但我想知道为什么它不适用于单个表单?
    • 因为对话框的 HTML 输出是由 JavaScript 重新定位到 HTML &lt;body&gt; 的末尾,导致它不再位于任何 &lt;form&gt; 内。
    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2011-05-15
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多