Ich möchte Benutzern erlauben, Zellen in der Datentabelle nur dann zu bearbeiten, wenn eine Bedingung erfüllt ist.Bedingte Zellbearbeitung in PrimeFaces-Datentabelle
Anfangs habe ich <choose>
versucht, dies zu erreichen:
<p:dataTable var="item" value="${bean.items}" editable="true" editMode="cell">
<p:column headerText="column A">
<c:choose>
<c:when test="${item.isEditable}">
<p:cellEditor id="title">
<f:facet name="output">
<h:outputText value="#{item.title}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.title}"/>
</f:facet>
</p:cellEditor>
</c:when>
<c:otherwise>
<h:outputText value="#{item.title}"/>
</c:otherwise>
</c:choose>
</p:column>
...
aber es funktioniert nicht. Ein weiterer Ansatz ist rendered
Attribut zu verwenden:
<p:column headerText="column A">
<p:cellEditor rendered="${item.isEditable}">
<f:facet name="output">
<h:outputText value="#{item.title}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.title}"/>
</f:facet>
</p:cellEditor>
<h:outputText value="#{item.title}" rendered="#{!item.isEditable}"/>
</p:column>
, die gut funktioniert - Benutzer können nur erlaubt, Zellen bearbeiten.
Aber auch wenn Zelle nicht editierbar ist, hat es immer noch ui-cell-editing
Klasse und sieht aus wie bearbeitbare Zelle für Benutzer.
Was ist eine korrekte Methode, um die Bearbeitung von Zellen zu übernehmen?
Vielen Dank!
danke @BalusC Ich werde auf jeden Fall versuchen, benutzerdefinierte Renderer zu verwenden und das Ergebnis hier posten. Vielen Dank für die umfassende Antwort! – Meta
Gern geschehen. – BalusC
Vielen Dank dafür, ich werde an einer Pull-Anfrage arbeiten, um dieses Verhalten zu replizieren. –