Ответ 1
:
выбран потому, что единственный разумный разделительный символ, для которого может быть гарантирован тот факт, что конечный пользователь не будет случайно использовать его в идентификаторах компонентов JSF (который был проверено) и, что можно использовать его в селекторах CSS, экранируя его с помощью \
.
Обратите внимание, что спецификация HTML4 говорит, что двоеточие является допустимым значением в id
и name
. Поэтому ваша жалоба о том, что она несовместима с "веб-стандартами", никуда не годится.
ЗнакиID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое количество букв, цифр ([0- 9]), дефисы ( "-" ), подчеркивания ( "_" ), двоеточия ( ":" ) и периоды ( "." ).
Единственная проблема заключается в том, что :
является специальным символом в селекторах CSS, которые необходимо экранировать. У JS нет проблем с двоеточиями. document.getElementById("foo:bar")
работает отлично. Единственная возможная проблема заключается в jQuery, потому что он использует синтаксис селектора CSS.
Если вам действительно нужно, вы всегда можете изменить символ разделителя по умолчанию :
, установив параметр javax.faces.SEPARATOR_CHAR
context, например. -
или _
, как показано ниже. Вам нужно только гарантировать, что вы не используете этот символ нигде в идентификаторах компонентов JSF самостоятельно (он не проверен!).
<context-param>
<param-name>javax.faces.SEPARATOR_CHAR</param-name>
<param-value>-</param-value>
</context-param>
_
имеет, кстати, дополнительный недостаток, что он встречается в автогенерированных идентификаторах JSF, таких как j_id1
, поэтому вы также должны убедиться, что все NamingContainer
на всех ваших страницах JSF есть фиксированный идентификатор, а не автогенерированный. В противном случае у JSF возникнут проблемы с поиском именования контейнеров.
Я бы не рекомендовал этого. Он в течение долгого времени путается и хрупка. Чтобы снова подумать об этом, уникальные элементы в среднем веб-приложении JSF сами по себе обычно уже не входят в формы или таблицы. Как правило, они просто представляют основные аспекты макета. Я бы сказал, это в противном случае плохой дизайн в целом с точки зрения HTML/CSS. Просто выберите их с помощью повторных имен классов CSS вместо идентификаторов. Если вам действительно нужно, вы всегда можете обернуть его в простой HTML <div>
или <span>
, идентификатор которого не будет добавлен JSF.
См. также:
- Каковы допустимые значения для атрибута id в HTML?
- Можно ли изменить разделитель идентификаторов элементов в JSF?
- Как выбрать компоненты JSF с помощью jQuery?
- Как использовать сгенерированный JSF идентификатор элемента HTML с двоеточием": " в селекторах CSS?
- Интеграция JavaScript в составной компонент JSF, чистый способ