Как получить элемент из JavaScript в JSF 2.0 - PullRequest
1 голос
/ 27 марта 2010

У меня есть код JSF, например:

<h:inputText id="from" value="#{fromToMBean.fromName}"/>

Я бы хотел получить этот элемент из JavaScript по ID (from), но не могу, потому что в сгенерированном HTML это j_idt8:from

Как я могу получить этот элемент, например, JQuery? Есть ли способ заставить JSF2 не менять идентификаторы?

Ответы [ 5 ]

2 голосов
/ 28 ноября 2012

Есть ли способ заставить JSF2 не изменять идентификаторы?

Вы можете установить prependId="false" Таким образом, в сгенерированном HTML это будет с вместо j_idt8: с .

prependId: Флаг, указывающий, следует ли заполнять эту форму его идентификатор к идентификатору его потомка во время генерации clientId процесс. Если этот флаг не установлен, значением по умолчанию является true.

Как я могу получить этот элемент, например, JQuery?

Вы можете использовать ancestorComponent:from в jQuery, чтобы получить этот элемент.

На самом деле j_idt8 in j_idt8: с автоматически генерируется идентификатор компонента-предка вашего <h:inputText/>

например

<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>

Теперь сгенерированный идентификатор входного текста будет иметь вид : с

Если вы не предоставляете идентификатор для компонента, ваш браузер генерирует его динамически. Поэтому не забудьте указать идентификаторы для компонентов.

2 голосов
/ 27 марта 2010

Вы можете либо использовать пользовательский класс, который вы назначаете только этому элементу, и использовать селекторы css, либо назначить идентификатор для формы и получить элемент с идентификатором formid:from.

0 голосов
/ 09 июня 2014

Вы можете использовать jquery. Просто используйте селектор, определяющий текст, который он должен содержать. Примерно так:

$( "input[name*='from']" )

'* =' используется, чтобы сказать, что атрибут name содержит некоторую строку. Также существует '~ =' с аналогичным значением.

Для подробных объяснений и примеров посетите http://api.jquery.com/attribute-contains-selector/

0 голосов
/ 18 августа 2010

Чтобы получить полный идентификатор для компонента, используйте неявные объекты EL и их свойства, такие как #{cc.clientId} и #{component.clientId}. Источник: Получение полного префикса для компонента clientId компонента в контейнерах именования с JSF 2.0 .

0 голосов
/ 01 апреля 2010

В JSF 1.2 вы можете использовать forceId = "true". Я не уверен, что вы можете использовать t: input в JSF 2, но вы должны это сделать. Тогда его идентификатор в HTML будет тем, что вы ожидаете.

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