Как получить элемент из javascript в JSF 2.0
-
22-09-2019 - |
Вопрос
У меня есть код 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/