Prime Faces 3.2 で JSF2.0 を使用しています。2 つのコマンド ボタンを持つ列を持つデータ テーブルがあります。2 番目のコマンド ボタンは、条件に基づいてレンダリングされます。データ テーブルがフィルター処理されるまで、すべてが正常に機能します。レンダリングされた属性のない最初のコマンド ボタンをフィルタリングすると、問題なく actionListener が呼び出されますが、レンダリングされた属性を持つ 2 番目のコマンド ボタンは問題なく呼び出されます。
PS: setPropertyActionListener の代わりに f:param を使用している理由は、フィルタリング時に間違った行の ID を渡す primefaces データテーブルのバグのためです。
これが私のコードです。この問題についての洞察は素晴らしいでしょう。
<p:column headerText="Column1" filterMatchMode="contains" filterBy="#{item.name}" sortBy="#{item.name}">
<h:outputText value="#{item.name}" style="float:left" />
<span class="inlineButton">
<p:commandButton id="selectBtn" icon="select"
oncomplete="dialog1.show()" actionListener="#{controller.setItem}">
<f:param name="itemId" value="#{item.id}"/>
</p:commandButton>
<p:commandButton id="delBtn" icon="delete"
actionListener="#{controller.setItem}"
oncomplete="delConfirm.show()"
rendered="#{not empty item.id}">
<f:param name="itemId" value="#{item.id}"/>
</p:commandButton>
</span>
</p:column>