我正在使用 Primefaces 3.4 和 JSF 2.0。我有 ap: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 图标(用于结束编辑模式)而且我不想有两个关闭图标,一个意思是取消编辑模式,一个意思是删除当前行。
所以我决定将它嵌入 ap: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 围绕它一样。
任何人都可以在这里看到任何明显的错误,或者这是 primefaces 的问题吗?如果有任何帮助,我将不胜感激。