2016-08-24 3 views
0

У меня есть простая страница с формой, которая содержит TextField. Я установил объект модели (Serializable POJO) с помощью одной переменной с именем containerId. Независимо от того, использую ли я LoadableDetachableModel или стандартную Model.of(), если у меня есть параметр PageParameter, также называемый containerId, тогда поведение модели модели модели приводит к тому, что значение всегда остается таким, каким установлено значение PageParameter. Если я изменил имя параметра страницы на контейнер и передал это значение в мою модель при инициализации, проблема исчезнет. Кто-нибудь еще испытал это? Если вы можете предоставить какие-либо сведения о том, почему это происходит?Wicket PageParameters Interfere с объектом модели страницы

ответ

2

Похоже, что конфликт находится в URL-адресе, который создается при отправке формы. Я бы предположил, что ваша страница смонтирована таким образом, что PageParameters кодируются как параметры запроса в URL-адресе и что форма отправляется через GET, поэтому они кодируют свои значения в качестве параметров запроса в URL-адресе. Таким образом, добавляются два параметра запроса с тем же именем, и один из них теряется.

Итак, есть по крайней мере два варианта, вы можете попробовать:

  1. Изменение формы для POST (добавить метод = «POST» в HTML)

  2. Маунт страницы таким образом, который кодирует параметры страницы по-разному, например, следующим образом:

    mountPage ("/ page/$ {containerId}", YourPageClass.class);

+1

Еще один способ его работы - переопределить TextField # getInputName() и вернуть что-то уникальное (решать вам, что это может быть). –

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