2017-01-30 6 views
0

Я использую язык выражения, чтобы дать Javascript-функции на стороне клиента идентификатор конкретного DIV. Я использую это:При разрешении имен XPages/JSF, почему: 0 иногда добавляется?

"#{id:repeatsecondlevelnodes}" 

Во-первых, я не совсем уверен, как распознаватель находит «реальный» идентификатор. Я предполагаю, что это нечто похожее на CSS Selectors, но я не смог найти на нем авторитетную документацию. Буду признателен за любую ссылку на любую документацию.

Во-вторых, я не понимаю, почему иногда разрешенное значение символы: 0

Иногда я получить

view:_id1:repeatfirstlevelnodes:1:repeatsecondlevelnodes:0 

, когда я ожидал

view:_id1:repeatfirstlevelnodes:1:repeatsecondlevelnodes 

и Я не понимаю, что вызывает разницу. До сих пор я взломал его, просто удалив: 0, если я воспользуюсь, но я бы лучше понял, как работает резольвер.

the source of my confusion

+1

прилагается, а не добавляется, и, пожалуйста, не публикуйте код на скриншотах. В-третьих, отправьте связанный исходный код xhtml/xpage. Короткий ответ: он добавляется, если у вас есть итерационные компоненты, такие как данные, ui: repeat или аналогичные – Kukeltje

+1

@Kukeltje: Обычно их индекс не заканчивается на последнем месте цепочки. Эндрю: Вот пища для размышлений http://stackoverflow.com/q/12615556 А именно, вы, кажется, злоупотребляете идентификаторами, в конечном счете, той же самой общей вещи. – BalusC

+0

@BalusC: правда, забыли об этом ... – Kukeltje

ответ

0

"#{id: ... }" является специальным выражением, чтобы получить обработанную идентификатор клиента элемента управления XPage идентификатора. Он выполняется на стороне сервера. Сервер знает, какой идентификатор получит обработанный клиентский элемент.

Пример:

Код CSJS определяемом в XPage

var element = document.getElementByID("#{id:repeatsecondlevelnodes}") 

будет изменен сервером до того, как посылают к клиенту на что-то вроде

var element = document.getElementByID("view:_id1:repeatfirstlevelnodes:0:repeatsecondlevelnodes") 

Это всегда будет работать, как сервер знает точные идентификаторы клиентов.

Не пытайтесь самостоятельно вычислить идентификаторы клиентов, поскольку они могут измениться при изменении чего-либо в XPage. Просто верьте выражение "#{id: ... }".

+0

Привет, Кнут и спасибо за ответ. Мой прецедент немного сложнее; синтаксис CSJS генерируется динамически (это часть серии вложенных элементов управления повторением). Связано с этим: http://stackoverflow.com/questions/41912525/nested-expression-language-syntax-in-xpages. Однако вещь, которую я не получаю, заключается в том, что иногда бывает добавлено: 0 к расчетному идентификатору. Я пытаюсь понять, что вызывает: 0, и избегать этого, я не пытаюсь вычислять идентификатор самостоятельно. –

+0

Я понимаю.Хотя «до сих пор я взломал его, просто удалив: 0» мне показалось, как вычисление идентификатора клиента ;-) –

+0

Это еще хуже, это симптоматическое обращение с ошибками, и я ненавижу это в коде других людей, и это действительно действительно меня беспокоит, когда я должен сделать это сам! –

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