Hallo Ich würde gerne über eine Liste von Personen-Objekten iterieren und die Daten pro Person auf einer Registerkarte anzeigen. Ich habe es versucht:
%Vor%Das funktioniert nicht. Jede Hilfe geschätzt
Marcel
PrimeFaces 3.x's tabView unterstützt jetzt eine dynamische Anzahl von Tabs mit einer eigenen Iterationsfunktion:
%Vor%Leider ist es immer noch nicht möglich, sowohl feste als auch dynamische Registerkarten in dieselbe tabView einzufügen (wie ich es tun wollte) oder sogar dynamisch eine Registerkarte hinzuzufügen, ohne die Ansicht neu zu erstellen. Glücklicherweise ist Letzteres keine große Sache, wenn eine SessionScoped- oder CDI ConversationScoped-Bean (oder vielleicht auch eine JSF ViewScoped-Bean) verwendet wird.
Der p:tabView
muss über alle seine Registerkarten Bescheid wissen. Sie müssen also während der Erstellung der Ansicht, nicht während der Renderzeit der Ansicht, Registerkarten erstellen. Verwenden Sie also c:forEach
anstelle von ui:repeat
. Es ist bereits in Facelets enthalten und sein Standard-XML-Namespace ist xmlns:c="http://java.sun.com/jsp/jstl/core"
.
Aktualisieren gemäß Ihrer neues Problem damit : das ist in der Tat ein Nachteil von c:forEach
. Sie müssen im Grunde die Eingabe-IDs / Namen selbst angeben und sie selbst sammeln. Eine weitere Alternative besteht darin, die Registerkarten programmgesteuert in verwaltetem Bean-Code zu erstellen oder eine Feature-Anforderung an PrimeFaces zu senden, um eine <p:tabs>
-Komponente hinzuzufügen, die eine Auflistung oder ein Array übernimmt.
Ich habe dynamische Tabs und sogar Inhalte mit einer Ausnahme. Ich kann nicht die inputText.setLabel () zu arbeiten. .setValue () funktioniert, aber nicht .setLabel ()
Hier ist der redigierte und wichtige Code. ich benutzte
%Vor%Es macht nichts, setLabel tut nicht, was ich denke. Ich dachte, es würde automatisch ein Label für mich generieren. Aber ich denke, ich muss ein Label auf andere Weise hinzufügen. Irgendwelche Vorschläge?
Ich habe es gefunden !!!!
%Vor%Noch einmal, der Grund dafür, dies in einer Bean zu tun, ist die dynamische Natur des Formulars und der Rendering-Lebenszyklus der verschiedenen JSF-Tags. Wenn Sie eine Registerkartenansicht an eine Backing-Bean binden, bleiben Sie für die Dauer der tabView in der Backing-Bean stecken. Wenn Sie irgend etwas anderes in die Tabview-JSF-Deklaration einfügen, wird es nicht gerendert. Es sei denn, ich habe etwas verpasst? Ich konnte das ui nicht erreichen: wiederhole das Tag, um mit dem p: tab zu arbeiten, und ich darf c: foreach tags nicht benutzen.
Auch konnte ich keine einzelne Instanziierung der primface Komponenten verwenden. Ich musste jedes Mal eine neue Instanz erstellen, wenn ich eine Komponente zu einer anderen Komponente hinzufügen wollte.
In Primefaces 5.X Sie sollten dies verwenden, um viele Registerkarten in tabview
zu erzeugen %Vor%und, In Ihrem Java-Controller erhalten Sie das in der Wechseltabelle ausgewählte Element mit "event.getData ()":
%Vor%der Code
// Tabs nach Code generieren
tabView = neue TabView ();
erzeugt einen Fehler im Browser: Eigenschaft nicht gefunden; Anstatt ein neues Schlüsselwort zu verwenden, müssen Sie Folgendes verwenden:
FacesContext fc = FacesContext.getCurrentInstance ();
ContentTabView = (TabView)
fc.getApplication (). createComponent ("org.primefaces.component.TabView");
Die HomeController-Klasse muss sich auch in @RequestScoped befinden
Tags und Links java jsf primefaces