我正在使用Primefaces 3.4和JSF 2.0。我有一个p:commandLink:

<p:commandLink action="#{wizard.onRemoveFoodItem}" update="@(#ingredientListContent)" immediate="true">
    <span class="ui-icon ui-icon-close"></span>
    <f:setPropertyActionListener target="#{wizard.selectedFoodItem}" value="#{foodItem}" />
</p:commandLink>

目的是从我的p:dataTable中的食品列表中删除一行,并且在正常情况下可以正常工作。问题在于,我还希望将ap:rowEditor放在同一位置,对于熟悉primefaces rowEditor的人,在编辑时可以看到一个选中标记和一个x图标(用于结束编辑模式)而且我不想有两个关闭的图标,其中一个含义是取消编辑模式,另一个含义是删除当前行。

因此,我决定将其嵌入p:cellEditor中,以便在编辑过程中隐藏用于删除行的“x”:
<p:cellEditor>
    <f:facet name="output">
        <p:commandLink action="#{wizard.onRemoveFoodItem}" update="@(#ingredientListContent)" immediate="true">
            <span class="ui-icon ui-icon-close"></span>
            <f:setPropertyActionListener target="#{wizard.selectedFoodItem}" value="#{foodItem}" />
        </p:commandLink>
    </f:facet>
    <f:facet name="input"><h:outputText value="" /></f:facet>
</p:cellEditor>

这奇怪地发送了一个ajax请求并获得了更新响应(没有明显的验证错误),但是它没有像不在p:cellEditor标记内那样调用onRemoveFoodItem的操作方法。我知道p:cellEditor并不是真的应该以这种方式使用,但是我认为当可见时,它将表现为好像周围没有p:cellEditor。

有人可以在这里看到任何明显错误的东西吗,或者这是素面的问题吗?我将不胜感激。

最佳答案

我遇到了类似的问题,并通过在 p:commandLink 中添加 process =“@ this” 属性来解决此问题。

08-08 01:35