Калитка - можете ли вы указать идентификаторы наценок для элементов внутри повторителей? - PullRequest
3 голосов
/ 15 ноября 2011

Мне трудно протестировать наше приложение Wicket с использованием Selenium из-за случайных идентификаторов разметки.

Для отдельных элементов я могу использовать abc.setOutputMarkupId(true).setMarkupId("myId"), чтобы явно установить их идентификатор разметки.Что, если элемент добавляется динамически с использованием повторителя (например, ListView)?Есть ли способ указать, как должна выглядеть последовательность идентификатора разметки?

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

как сказал Андрей, это возможно, но опасно. setMarkupId doc:

Извлекает идентификатор, с помощью которого этот компонент представлен в разметке. Это либо атрибут id, установленный явно через вызов org.apache.wicket.Component.setMarkupId (java.lang.String), id атрибут, определенный в разметке, или автоматически сгенерированный идентификатор этот порядок. Если явный идентификатор не установлен, эта функция сгенерирует идентификатор значение, которое будет уникальным на странице. Это предпочтительный способ как нет шансов на столкновение ID. http://www.kiwidoc.com/java/l/p/org.apache.wicket/wicket/1.4.0/p/org.apache.wicket/c/Component#top

а также вы не можете получить идентификатор разметки с помощью getMarkupId ()

1 голос
/ 15 ноября 2011

Ну, вы не можете сделать то же самое с ListView?Если вы создаете свою собственную реализацию ListView, а затем в методе populateItem(final ListItem<?> listItem) для этого соответствующего listItem вы делаете:

listItem.setOutputMarkupId(true); // write id attribute of element to html
listItem.setMarkupId("id"+i);

, где i - это некоторый индекс, который вы инициализируете в конструкторе ListViewили что-то?

...