Смотрите простой пример JSF:
<h:form id="signup-form"> <h:inputText id="email" value="#{beanBean.email}"/> </h:form>
Будет сгенерирован следующий HTML-код:
<input id="signup-form:email" type="text"/>
Использует селектор jQuery, чтобы получить идентификатор электронной почты, но не удалось.
<script> jQuery(document).ready(function($) { $('#signup-form:email').checkEmailFormat(); }); </script>
Решение
Это хорошо известная проблема интеграции JSF и jQuery - двоеточие «`: `» зарезервировано для селектора jQuery. Чтобы использовать селектор jQuery для получения идентификатора JSF, вам необходимо « избежать » двоеточия, поместив перед ним две обратные косые черты:
<script> jQuery(document).ready(function($) { $('#signup-form\\:email').checkEmailFormat(); }); </script>
Для PrimeFaces
PrimeFaces поставляется с функцией для выхода из идентификатора JSF:
<script> jQuery(document).ready(function($) { $(PrimeFaces.escapeClientId('signup-form:emil')).checkEmailFormat(); }); </script>
Эта функция
PrimeFaces.escapeClientId
взята из` primefaces.js`, просмотрите исходный код, это просто функция-обертка js для замены двоеточия «:» с размещением двойной обратной косой черты перед ней.
primefaces.js
escapeClientId:function(a){return"#"+a.replace(/:/g,"\\:")}
P.S Протестировано с PrimeFaces 3.3
Рекомендации
, http://docs.jquery.com/Frequently Asked Questions#How do I select an element by an ID that has characters used in CSS__notation.3F[How
выбрать элемент по идентификатору, в котором есть символы, используемые в CSS нотация?], http://www.tequilafish.com/2007/12/04/jquery-how-to-get-the-id-of-your-current-object/ [jQuery
ссылка://тег/jquery/[jquery]ссылка://тег/jsf/[jsf]ссылка://тег/primefaces/[primefaces]