2013-08-28 5 views
5

Ich habe eine Reihe von Stateful-Seiten mit einem Zustand für jede Seite. Zum Beispiel hat jede Seite ein Formular, das gesendet wurde.Link zur letzten Version der statusbehafteten Seite

Wie kann ich ein Menü mit Links zu den letzten Versionen dieser Stateful-Seiten organisieren? Soll ich irgendwo (vielleicht in der Sitzung) auf das entsprechende Objekt für jede Seite verweisen? Wenn ich

onClick() { setResponsePage(MyPage.class); } 

verwenden, als ich den vorherigen Zustand der Seite verlieren. Ich möchte zum letzten Status der Seite verlinken.

Antwort

1

Jedes Mal, wenn die Seite gerendert wird, speichern Sie die ID der Seite in der Sitzung.

int pageId = pageInstance.getPageId(); 

Eine Listen- oder Stapeldatenstruktur könnte verwendet werden, um die Bezeichner zu halten.

Sie können das Navigationsmenü mithilfe eines Repeaters (RepeatingView o. Ä.) Implementieren, der für jede Seiten-ID in der Sitzung eine neue Verknüpfung erstellt.

in der Klick-Handler Link Sie den Benutzer umleiten lassen sich wie folgt:

Page pageInstance = (Page) new PageProvider(pageId, null).getPageInstance(); 
setResponsePage(pageInstance); 
0
pageId = this.getPageId(); // get current version of lets say a HomePage 


//OnClick for Link 
public void onClick() 
     { 
     WebPage homePageInstance = 
      (WebPage) new PageProvider(HomePage.pageId, null).getPageInstance(); 
     setResponsePage(homePageInstance); 
     } 
    }); 
+2

Code ist nicht selbsterklärend. Fügen Sie in Ihrem Code eine Erklärung hinzu, dass der Autor der Frage versteht, was Ihr Code zu lösen versucht. – rajuGT

0

ich es int previousId Parameter über Konstruktor machen vorbei:

@MountPath(value = "editSomethingPage") 
public class TestPage extends WebPage { 

int previousPageId = 0; 

public TestPage(int previousPage) { 
    super(); 
    this.previousPageId = previousPage; 
} 

@Override 
protected void onInitialize() { 
    super.onInitialize(); 
    add(new Link("goBack") { 
     @Override 
     public void onClick() { 
      if (previousPageId != 0) { 
       setResponsePage((Page) AuthenticatedWebSession.get().getPageManager().getPage(previousPageId)); 
      } else { 
       setResponsePage(PreviousPage.class); 
      } 
     } 
    }); 
    } 
} 

Es verhindert die Schaffung neuer Seiteninstanz und behält alle von Benutzer erstellten Status der Seite bei.

Verwandte Themen