barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

вторник, 13 декабря 2011 г.

Формирование Орбеоном "эффективных" id элементов XBL-компонента при отрисовке страницы

При отрисовке страницы Орбеоном окончательные id ("эффективные" в терминологии Орбеона - http://wiki.orbeon.com/forms/doc/developer-guide/xforms-javascript-integration), присваиваемые элементам управления компонента (и по которым, можно, скажем, получить их значения  из JS вызовом ORBEON.xforms.Document.getValue()), отличаются от тех, которые были заданы в xbl-файле компонента.
Во-первых, в начало id-шника добавляется нечто вроде 'xf-396$', где вместо 396 будут другие цифры, выполняющие роль идентификатора компонента для разделения областей видимости id-шников разных компонентов, т.е. для разных экземпляров одного и того же компонента это число одинаково (не проверял, постоянно ли оно для последовательных загрузок формы или для различных запусков JVM, т.к. считаю, что в любом случае полагаться на это постоянство опасно). Если компонент вкладывается в другой компонент - соответственно, в начале id-шника оказывается уже несколько таких последовательностей.
Во вторых, если компонент вложен в repeat, то в конце к его id добавляется '·1', '·2' и т.п. в зависимости от текущей итерации repeat`а (где '·' - это символ U+00B7). Если repeat`ы - вложенные, то окончания эффективного id буду выглядеть как '·1-1', '·1-2', '·2-1' и т.п. (где первая цифра - итерация самого внешнего repeat`а, а после неё через дефис идут итерации вложенных в порядке углубления). Правило относительно repeat`ов относится не только к компонентам, но и к любым элементам управления.

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

Отправить комментарий