2013-04-10 29 views
0

我需要從url檢索參數。這是一個簡單的情況下,我這樣做對網頁進行水平時 - 它可以通過某事像這樣做:Wicket - 以優雅的方式在會話級別檢索PageParameters

@MountPath(INDEX_PREFIX + "/${" + OBJECT_ID_KEY + "}") 
    public class IndexPage extends WebPage 
    { 
      public IndexPage(PageParameters parameters) 
      { 
        String id = parameters.get(OBJECT_ID_KEY).toString(); 

        // etc... 
      } 
    } 

但我需要它在會話級完成- 在getRoles()方法。

我以這種方式做到了這一點:

@Override 
    public Roles getRoles() 
    { 
      final Request request = RequestCycle.get().getRequest(); 
      List<String> segments = request.getUrl().getSegments(); 
      if (segments != null && segments.size() > 1 && INDEX_PREFIX.equals(segments.get(0))) 
      { 
        String id = segments.get(1); 
      } 

      // etc... 
    } 

URL結構如下:www.my.page.com/index/5

指數 - INDEX_PREFIX

- OBJECT_ID_KEY

有沒有更好的方法?

回答

3

您已經擁有了Request在你的手 - 現在只需按照API :-)

Request req = RequestCycle.get().getRequest(); 
IRequestParameters params = req.getRequestParameters(); 
StringValue idValue = params.getParameterValue("id"); 

而且你去那裏。

+0

我試過這個解決方案 - * idValue *返回null ...當我傳遞參數例如:* ... /?id = 5 *時,它工作的很好,但我需要通過RESTful Api使用 – 2013-04-12 12:37:07

+0

Something例如:* www.example.com/index/5 *,其中5是我的*編號* – 2013-04-12 12:53:24

+1

您需要在您的應用程序中使用像這樣的模式掛載頁面#init():mountPage(MyPage.class,「/指數/ $(編號)「); – 2013-04-12 16:46:42