Почему Wicket меняет идентификатор элементов HTML? - PullRequest
8 голосов
/ 16 января 2010

Если я напишу

<form wicket:id="form" id="form>

или даже

<form wicket:id="form>...

Затем отображаемый HTML-код показывает идентификатор «form», добавляемый с разными номерами при каждом обновлении страницы, например,

   <form id="form7"....

Есть ли способ отключить это поведение платформы Wicket?

Ответы [ 5 ]

18 голосов
/ 19 января 2010

Мы тщательно устанавливаем идентификаторы разметки в нашем проекте, чтобы упростить автоматическое тестирование с помощью инфраструктуры тестирования Selenium. Это определенно работает.

Component.setOutputMarkupId(true); // write id attribute of element to html
Component.setMarkupId("someid"); // id attribute of element is "someid"
7 голосов
/ 16 января 2010

Это поведение, которое вы хотите в большинстве случаев при использовании калитки.Динамический идентификатор предназначен для предотвращения конфликтов идентификаторов, когда поведение Ajax добавляется в компоненты или добавляется в ответы Ajax для обновления.В любой из этих ситуаций вам действительно нужно, чтобы ответ клиента и состояние на стороне сервера находились в соприкосновениях.Если есть внешние js-ресурсы, вам нужен идентификатор компонента для поиска dom, тогда я бы предложил добавить пользовательское поведение компонента wicket, которое затем сгенерирует вызов js для функции, передающей сгенерированный id.Понимание того, что я собираюсь описать, ведет вас в лес Уикетта.Но я был более чем доволен вещами Ajaxy, которые Wicket открывает для вас из коробки.

4 голосов
/ 16 января 2010

Это функция оформления калитки. Вы можете использовать класс для связывания стилей и компонентов.

<form wicket:id="form" id="form>

Также вы можете попробовать (я никогда не делал) setMarkupId . Я не уверен, что это хороший способ.

0 голосов
/ 12 января 2011

Да, вы можете написать собственный JavaScript ... вам просто нужно реализовать его в соответствии с «Wicket way».Вы можете декорировать компоненты, Ajax-вызовы и т. Д. С помощью специального JavaScript, и тогда все будет хорошо.

0 голосов
/ 16 января 2010

Прошло много времени с тех пор, как я работал с Wicket, но я помню, что когда wicket использует элементы ajax, автоматически генерируются id s (тег id, а не wicket:id).Вы можете контролировать идентификатор тега, когда не используется и элемент ajax.В вашем случае, поскольку код отсутствует, я думаю, вам придется изменить любой AjaxButton или Ajax* из вашей формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...