Hallo
Ich habe ein Problem bei der Programmierung einer Webapplikation mithilfe von Seam.
Erstmal generell: Zum Verlinken benutze ich den s:buttons.
Ein typischer UseCase wäre z.B.
Objektliste wird aufgerufen. Aus dieser Liste wird ein Objekt (nennen wir es A) ausgewählt und in der Detailview geöffnet. Hier wird im Button das Attribut propagation auf „begin“ gesetzt. Ein Parameter cameFrom wird in der URL mit übergeben (in der Url würde das dann z.b. als cameFrom=AList stehen), sodass die Detailview beim zurück navigieren weiss woher sie kam. Auf die Detailview leite ich dann mit view=/ADetail weiter
Nun hat Objekt A weitere Unterkomponenten (B). Soll eine dieser Unterkomponenten bearbeitet werden, dann wird das Attribut propagation auf „nest“ gesetzt und der Parameter cameFrom wird mit der aktuellen view überschrieben (also steht in der URL dann cameFrom=ADetail).
Das gleiche Mache ich nun mit einer Unterkomponente © von Objekt B.
Sowohl A,B als auch C haben eine Listen ansicht in der man sich alle Objekte des Typs anzeigen lassen kann. Auf diese Listview wird verlinkt wenn das Attribut „cameFrom“ leer ist.
Nun möchte ich Schritt für Schritt mit den s:buttons den gleichen Weg wieder zurück gehen.
Dafür verwende ich ebenfalls s:buttons indenen das Attribut propagation auf „end“ gesetzt wird, damit die mit „nest“ geöffnete „Unterpropagation“ beendet wird und in die übergeordnete zurück gewechselt wird.
Wenn ich nun nach B zurück navigieren möchte funktioniert das auch wunderbar, da das Attribut cameFrom ja noch gesetzt ist und auf BDetail steht.
Wenn ich nun aber von BDetail auf ADetail wecheln will funktioniert das nicht da ich in der URL (und auch anscheinden (?)nirgends sonst) das Attribut cameFrom habe. Somit ist cameFrom leer und ich werde auf BList geleitet.
Eigentlich dachte ich, dass solche Attribute in der propagation zwischengespeichert werden. Dem scheint ja nicht so zu sein.
Jetzt frage ich mich allerdings wie ich eine solche Navigation verwirklichen kann.
Natürlich könnte ich jetzt einen weiteren Parameter übergeben der die vorherige URL einspeichert. Aber da diese Applikation ziemlich groß und verzweigt ist, müsste ich theoretisch gesehen unendlich viele Parameter mit in die URL geben, da man (fast) von jedem Startpunkt aus überall hin gelangen kann und der Benutzer ja nicht ein Objekt speichert und dann den Navigationspfad von vorne beginnt.
Mir fällt momentan kein Weg ein wie ich das verwirklichen kann. Ich hoffe ihr könnt mir mit ein paar Lösungsansätzen helfen.
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt, wenn nicht einfach Fragen…
Schonmal vielen Dank im voraus
Grüße