Erzeugen Sie dynamisch Tabs mit PrimeFaces

7

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

    
Marcel Menz 29.10.2010, 14:05
quelle

6 Antworten

16

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.

    
Kevin Rahe 17.01.2012 21:26
quelle
4

Ich würde die tabView an die Server-Back-Bean binden

%Vor% %Vor%

Ich hoffe, es hilft, aber jetzt suche ich noch, wie man den Tab-Inhalt nach Code definiert.

    
Wen 18.01.2011 09:08
quelle
1

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.

    
BalusC 30.10.2010 05:23
quelle
1

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.

    
Justus 30.12.2011 14:22
quelle
1

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%     
diego matos - keke 06.04.2016 15:47
quelle
0

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

    
Harun 08.09.2011 07:43
quelle

Tags und Links