JSF - prependId не работает? - PullRequest
       1

JSF - prependId не работает?

3 голосов
/ 18 февраля 2012

Я пытаюсь использовать prependId для сокращения команд обновления.Если я использую квалифицированные идентификаторы везде, все работает нормально.Если я использую prependId, идентификатор не может быть найден:

<h:form id="form">
<p:dataTable id="table">
//closing tags

<p:commandButton update=":form:table"> //works



<h:form prependId="false">
<p:dataTable id="table">
//closing tags

<p:commandButton update=":table"> //works NOT!

Не удается найти компонент с идентификатором ": table" в представлении.

Что я делаю неправильно?

1 Ответ

4 голосов
/ 20 февраля 2012

, если вы хотите обновить извне теги, которые вы должны использовать ":".и, как я написал, он работает с конкретными идентификаторами.Я просто хочу узнать, как вместо этого работает prependId ...

Это верно, только если prependId="true".Для обновления атрибута требуется clientId для обновления, и, установив для prependId значение false, вы заявляете, что все элементы в этой форме будут иметь такой же clientId, как и идентификатор сервера.Так, как Jigar уже упоминал в комментарии выше, это должно быть просто table.

. Если вы мне не верите, попробуйте сами в Firebug и обратите внимание на самый внешний элемент div для объекта Primefacesидентификатор всего table.Обновление сможет найти это независимо от формы, потому что оно ищет идентификатор на странице, которая соответствует этому.

Это может быть опасно, хотя может быть очень легко случайно иметь несколько компонентов с одинаковыми идентификаторами.в конфликте по DOM.Это еще более верно для страниц, которые являются другими страницами или через которые включают компоненты, сторонние или иные на странице, которые также имеют внутренние элементы DOM с уникальными идентификаторами.Проблемы такого рода очень трудно отследить.

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