2013-04-06 2 views
3

моя картаApache Wicket bookmarkable url добавил еще один параметр в ссылку, почему?

mountPage ("/ page/# {code}/# {name}", Page.class);

, но когда я нажимаю на ссылку

localhost/page/10/toy?2

калитка добавить также один параметр, как счетчик, когда я обновить страницу У меня есть

localhost/page/10/toy?3

почему?

ответ

6

Это потому, что ваша страница с точки зрения состояния, Wicket управляет своими собственными состояниями на вашей странице, добавив этот «счетчик». Таким образом, когда ваш пользователь перемещается назад, используя встроенную функциональность браузера, страница отображается, если она была ранее.

Если вам не нужен такой параметр в вашем URL-адресе, вам нужно будет выкапывать и уничтожать каждый компонент, содержащий состояние, на ваших страницах.

+0

Спасибо, как я могу это единственный? params.add ("link", components.getModelObject(). GetPermalink()); params.add («код», код); Ссылка link = new BookmarkablePageLink ("link", OrderPage.class, params); link.add (новая метка ("linksel", "Select")); components.add (link); Я просто нажимаю на URL-адрес, а вторая страница расширена BasePage –

+0

Вы можете помочь Wicket, указав 'getStatelessHint()' возвращение true на вашей базовой странице. Боюсь, вам нужно будет отпустить отладчик, чтобы узнать, какой компонент является состоятельным, чтобы подавить его в вашем URL-адресе. –

+0

Ah Потрясающе много компонентов statefull, все равно спасибо –

1

Вы можете создать

public class MountedMapperWithoutPageComponentInfo extends MountedMapper { 

public MountedMapperWithoutPageComponentInfo(String mountPath, Class<? extends IRequestablePage> pageClass) { 
    super(mountPath, pageClass, new PageParametersEncoder()); 
} 

@Override 
protected void encodePageComponentInfo(Url url, PageComponentInfo info) { 

} 

@Override 
public Url mapHandler(IRequestHandler requestHandler) { 
    if (requestHandler instanceof ListenerInterfaceRequestHandler) { 
     return null; 
    } else { 
     return super.mapHandler(requestHandler); 
    } 
} 

}

и отображение страницы на классе приложений, как этот

mount(new MountedMapperWithoutPageComponentInfo("/page/#{code}/#{name}", Page.class)); 

 Смежные вопросы

  • Нет связанных вопросов^_^