Ich möchte dem Benutzer erlauben, Zellen in der Datentabelle nur dann zu bearbeiten, wenn eine Bedingung erfüllt ist.
Zuerst habe ich <choose>
versucht, dies zu erreichen:
aber es funktioniert nicht. Ein anderer Ansatz ist die Verwendung von rendered
attribute:
das funktioniert gut - Benutzer können nur erlaubte Zellen bearbeiten.
Aber selbst wenn die Zelle nicht editierbar ist, hat sie immer noch ui-cell-editing
class und sieht für den Benutzer wie eine editierbare Zelle aus.
Was ist eine korrekte Methode zum Anwenden der Bedingung auf die Zellenbearbeitung?
Danke!
Um die Lektion von JSTL richtig zu lernen, ist es aus dem in der folgenden Antwort erklärten Grund fehlgeschlagen: JSTL in JSF2 Facelets ... macht Sinn? Kurz gesagt: #{item}
ist im Moment, in dem JSTL läuft, nicht verfügbar.
Zurück zur konkreten Frage: Diese Style-Klasse wurde aufgrund der Kombination editMode="cell"
und der physischen Präsenz der <p:cellEditor>
-Komponente in <p:column>
eingefügt. Der Datable-Renderer PrimeFaces berücksichtigt überhaupt nicht, ob <p:cellEditor>
gerendert wird oder nicht. Es fügt einfach die Style-Klasse ui-editable-column
ein, die wiederum den Style ui-cell-editing
über JS / jQuery auslöst. Sie haben in die richtige Richtung für die Lösung gesucht, JSTL, die JSF-Komponenten in der JSF-Komponentenstruktur bedingt physisch hinzufügen / entfernen kann, aber leider wird es in diesem Konstrukt nicht funktionieren.
Am besten posten Sie einen Problembericht an die PrimeFaces-Mitglieder, wobei Sie nicht nur darum bitten Berücksichtigen Sie die physische Präsenz von <p:cellEditor>
component, aber auch dessen isRendered()
outcome. In Bezug auf PrimeFaces Version 3.5 wäre das in line 796 von DataTableRenderer
class , die ursprünglich so aussieht (Zeilenumbrüche wurden zur besseren Lesbarkeit eingeführt):
Und sollte wie folgt geändert werden:
%Vor%Wenn Sie nicht warten können, können Sie in der Zwischenzeit einen benutzerdefinierten Renderer erstellen.
%Vor% Um es zu starten, registrieren Sie es wie folgt in faces-config.xml
:
Tags und Links datatable jsf-2 primefaces