Как я могу направить пользователя на новую страницу динамически на основе выпадающего списка с простой Wicket?

#java #navigation #anchor #wicket

#java #навигация #привязка #wicket

Вопрос:

Вот моя ситуация: пользователь выбирает раздел (например, из выпадающего списка), такой как «Раздел1», «Раздел2» или «Раздел3». Затем он нажимает кнопку OK (или какую-либо ссылку).

Что мне нужно, чтобы произошло: после того, как он нажмет на эту кнопку / ссылку, он будет перенаправлен в выбранный раздел, например www.homepage.com/docs#section2 .

До сих пор мне не удалось обработать форму из Link onClick метода clickLink , и я не смог вызвать некоторые Link включения Button из onSubmit() метода,.

Я бы предпочел не использовать AJAX или JavaScript. Как я могу это сделать?

Комментарии:

1. Пожалуйста, покажите какой-нибудь код, чтобы нам было с чем работать.

2. пока нет кода (не относящегося к делу) Я прошу идеи, как решить эту проблему. (На мой взгляд, это распространенная проблема, и кому-то приходилось решать ее раньше)

Ответ №1:

Это потому, что ссылка не отправляет форму. Это просто действует как ссылка на что-то. Чтобы получить доступ к вашим formdata, вам нужно сначала отправить форму. Попробуйте использовать SubmitLink вместо ссылки и вызвать

 getRequestCycle().setRequestTarget  
    (new RedirectRequestTarget("www.homepage.com/docs#section2"));
  

из функции onSubmit ссылки на отправку.
Судя по Javadoc, это должно сработать, но я не могу протестировать это прямо сейчас.

Целевой запрос, который отправит URL-адрес перенаправления в браузер. Используйте это, если вы 
хотите немедленно направить браузер на какой-нибудь внешний URL-адрес, например Google и т.д. 
Или, если вы хотите перенаправить на страницу Калитки. Если вы хотите перенаправить с помощью 
задержка перенаправляющая страница выполнит перенаправление мета-тега с задержкой. 

Комментарии:

1. Параметры страницы были бы хороши, за исключением того, как бы вы перешли в соответствующую позицию… вам пришлось бы снова вернуться к javascript.

2. @Marcelo Действительно хорошая мысль… Я исправил свой ответ, чтобы исправить это.

3. И чтобы добавить к ответу Nicktar, вы можете использовать метод urlFor (Class clazz) для генерации строки URL и просто добавить «#section2» в зависимости от выбранного значения в форме.

Ответ №2:

Вы пробовали Link.setAnchor (компонент)?

Комментарии:

1. конечно, я сделал. Проблема в том, что мне нужно сначала обработать форму (выбор пользователя). Затем создайте div с определенной позицией, затем установите anchor. И все это одним щелчком мыши (выбор раздела нажатие кнопки / ссылки) Я управляю этим с помощью AjaxLink и javascript (scrollTo). Однако мне это не нравится таким образом. Я бы предпочел чистое решение

2. Я вижу. Я неправильно понял вопрос. Я бы, вероятно, подумал о том, чтобы для начала создать список выбора, который изменяет привязку к ссылке в OnSelectionChanged.