2013-08-28 17 views
5

Mam wiele stron z stanem z pewnym stanem dla każdej strony. Na przykład każda strona ma przesłany formularz.Link do ostatniej wersji strony stanowej

Jak mogę uporządkować menu z linkami do ostatnich wersji tych stanowych stron? Czy powinienem przechowywać gdziekolwiek (może być w sesji) odniesienie do odpowiedniego obiektu dla każdej strony? Jeśli użyję tego ustawienia, to stracę poprzedni stan strony. Chcę połączyć się z ostatnim stanem strony.

Odpowiedz

1

Przy każdym renderowaniu strony zapisz identyfikator strony w sesji.

int pageId = pageInstance.getPageId(); 

Do przechowywania identyfikatorów można wykorzystać strukturę danych listy lub stosu.

Możesz zaimplementować menu nawigacyjne za pomocą repeatera (RepeatingView lub innego), który tworzy nowy link dla każdego identyfikatora strony w sesji.

W click obsługi tego linku można przekierować użytkownika w następujący sposób:

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

kod nie jest oczywisty. Proszę dodać kilka wyjaśnień w kodzie, że autor pytania zrozumie, jaki kod próbuje rozwiązać. – rajuGT

0

robię to przechodząc int previousId parametru za pomocą konstruktora:

@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); 
      } 
     } 
    }); 
    } 
} 

Zapobiega tworzeniu nowej instancji strona i zachowuje wszystkie stany strony przez użytkownika.

Powiązane problemy