Complexe Navigation eigenes Objekt übertragen #10
-
Hallo, Die Vorgehensweise habe ich von dieser Anleitung für RapidClipse X. à https://rapidclipse.atlassian.net/wiki/spaces/RCXDOCDE/pages/657162323/Navigation … Es können aber auch mit Hilfe des RapidClipse Frameworks ganze Objekte übergeben werden. Navigation.To(OtherView.class).withParameter("myData", myData).navigate(); Dazu muss in OtherView.java folgendes implementiert werden: @NavigationParameter
private MyDataType myData;
@Override
public void navigationParametersUpdated()
{
System.out.println("myData is now available!");
} Hinweis:
Leider wird mein Objekt nicht an die Zielklasse übertragen, es ist immer null. Beispiel: Quellklasse: final SelectSolution selectSolution = new SelectSolution();
Navigation.To(PageSolConfigurator.class)
.withParameter("selectSolution", selectSolution)
.navigate(); Zielklasse: @HtmlImport("frontend://bower_components/vaadin-lumo-styles/all-imports.html")
@RedirectView
@Route("configure")
@Theme(value = PFTheme.class)
public class PageSolConfigurator extends VerticalLayout implements PageConfigurator, HasSettings
{
@NavigationParameter
private SelectSolution selectSolution;
…
} Soweit ich das verstehe, muss die Zielklasse das Interface HasUrlParameter für diese Variante nicht implementieren. Auch die optionale Methode kann nicht mit @OverRide überschrieben werden, da offensichtlich eine entsprechende Superklasse fehlt. Muss hier evtl. ein anderes Interface implementiert werden? „The method navigationParametersUpdated() of type PageSolConfigurator must override or implement a supertype method“ @Override
public void navigationParametersUpdated()
{
System.out.println("myData is now available!");
} Vielen Dank für die Unterstützung M. Güttler Migrated from RapidClipse Forum |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
Hallo, Damit ein Objekt übergeben werden kann, muss das Ziel-UI das Interface HasNavigationParameters implementieren. import com.rapidclipse.framework.server.navigation.HasNavigationParameters;
public class UIClass extends VerticalLayout
implements HasNavigationParameters
{
.....
} Dies wird in der RapidClipse-Dokumentation leider nicht erwähnt ... Falls man dann, wie in meinem Fall, die Daten des Objekts zum Aufbau der UI-Komponenten nutzen möchte, muss man die Methode navigationParametersUpdated() implementieren und seine Anpassungen von dort aus vornehmen. Diese wird von dem Interface aufgerufen, nachdem das Objekt initialisiert ist. Die üblichen init-Methoden sind zu diesem Zeitpunkt bereits alle abgearbeitet. @Override
public void navigationParametersUpdated()
{
System.out.println("myData is now available!");
} @RapidClipse Bitte aktualisiert eure Dokumentation! Viele Grüße Migrated from RapidClipse Forum |
Beta Was this translation helpful? Give feedback.
-
Es gibt noch eine Alternative dazu. Bei Absender GUI Klasse: UI.getCurrent().getSession().setAttribute(MyObject.class, myObject); Bei Empfänger GUI Klasse: MyObject myObject = (MyObject) UI.getCurrent().getSession().getAttribute(); Migrated from RapidClipse Forum |
Beta Was this translation helpful? Give feedback.
Es gibt noch eine Alternative dazu. Bei Absender GUI Klasse:
Bei Empfänger GUI Klasse:
Migrated from RapidClipse Forum