Вопрос

У меня есть код JSF, подобный:

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

например

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top