af:popup mit Übernahme der Änderungen in einer Erfassungsmaske

Problem:

In einer Erfassungs- oder Änderungsmaske soll über ein Popup-Dialog Daten eingegeben werdne, die anschließend in der aufrufenden Seite (hier eine Erfassungs- oder Änderungsmaske) angezeigt werden sollen.

Lösungsversuche:

Da der Dialog über einen Event verlassen wird, liegt es natürlich nahe, die Daten aus dem PopUp in einer Bean, die den Event verarbeitet, in die entsprechenden Datenwerte der Erfassungsmaske einzutragen. Leider tut sich an der Oberfläsche dannaber nicht, sprich, der Anwender sieht immer noch die alten Daten.

Alle Versuche über den BindingContainer (refresh oder auch direktes Änderen der Daten in der Attributliste des BindingContainer) helfen hier auch nicht.

In seinem Blog hat Shay Shmeltzer (http://blogs.oracle.com/shay/2008/05/13/#a683) den Lösungsansatz skizziert. Leider hat er es aber so ausgedrückt, als ob diese Lösung nur mit Tabellen funktioniet. Im Forum fand ich dann den Hinweis von Frank Nimphius (http://forums.oracle.com/forums/thread.jspa?messageID=2280508&#2280508), dass das auch mit anderen Komponenten geht.

Lösung:

Es ist aslo nur notwendig, das Panel (oder sonstige Gruppierungskomponente) in die Bean zu binden, die die PopupDaten verarbeiten soll und dann diese Komponente als PartialTarget einzutragen.

// gebundene Komponente, die die Attribute enthält
private RichPanelGroupLayout mainAttribute;
...

RequestContext.getCurrentInstance().addPartialTarget(mainAttribute);

Das aktuallisiert dann das Binding auf der Seite und zeigt die neuen Werte an.

Advertisements