2013-08-28 30 views
5

Tôi có một số trang có trạng thái với một số trạng thái cho mỗi trang. Ví dụ: mỗi trang có một biểu mẫu đã được gửi.Liên kết đến phiên bản cuối cùng của trang trạng thái

Tôi làm cách nào để sắp xếp menu có liên kết đến phiên bản cuối cùng của các trang trạng thái này? Tôi có nên lưu trữ bất kỳ nơi nào (có thể trong phiên) tham chiếu đến đối tượng thích hợp cho mỗi trang không? Nếu tôi sử dụng

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

hơn tôi mất trạng thái trước đó của trang. Tôi muốn liên kết đến trạng thái cuối cùng của trang.

Trả lời

1

Mỗi lần trang được hiển thị lưu trữ id của trang trong phiên.

int pageId = pageInstance.getPageId(); 

Cấu trúc dữ liệu danh sách hoặc ngăn xếp có thể được sử dụng để giữ số nhận dạng.

Bạn có thể triển khai menu điều hướng bằng bộ lặp (RepeatingView hoặc như vậy) tạo liên kết mới cho mỗi id trang trong phiên.

Trong handler click của liên kết mà bạn có thể chuyển hướng người dùng như sau:

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

mã không tự giải thích. Vui lòng thêm một số giải thích trong mã của bạn mà tác giả câu hỏi sẽ hiểu mã của bạn đang cố giải quyết. – rajuGT

0

tôi làm cho nó đi qua int previousId tham số thông qua constructor:

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

Nó ngăn cản tạo Ví dụ trang mới và giữ tất cả các trạng thái của trang do người dùng tạo.

Các vấn đề liên quan