我不喜欢JSF如何使用冒号分隔生成的HTML中的ID,因为它与CSS和JavaScript选择器发生冲突。而且我不喜欢总是逃避它的想法。因此,我想用其他角色替换它。有什么缺点吗?是否有一个共同的替代品?
答案 0 :(得分:3)
嗯......基于javax.faces.SEPARATOR_CHAR
值
似乎首选值为-
或_
(至少 BalusC )
您只需要保证不在JSF中的任何地方使用它 组件ID自己
By default, JSF generates unusable ids, which are incompatible with css part of web standards
答案 1 :(得分:3)
我不喜欢JSF如何使用冒号分隔生成的HTML中的ID,因为它与CSS和JavaScript选择器发生冲突。而且我不喜欢总是逃避它的想法。
只需按类名选择元素即可? HTML元素的性质真的是如此独特,以至于需要通过ID选择吗?这通常只适用于主要布局组件。
因此我想用其他角色替换它。有什么缺点吗?是否有一个共同的替代品?
您可以使用任何您想要的字符,只要它在HTML元素ID /名称中有效specified,如下所示:
ID 和 NAME 令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0- 9]),连字符(“ - ”),下划线(“_”),冒号(“:”)和句号(“。”)。
在冒号旁边,唯一合理的选择是连字符,下划线和句号。由于句点在CSS选择器中也是一个特殊字符,因此它会与冒号有同样的问题。从逻辑上讲,除了连字符-
和下划线_
之外,您没有其他选择。
至于缺点,肯定存在缺点。您需要确保不在JSF组件ID中的任何位置使用新的分隔符,如果<h:someComponent id="foo_bar" />
,则_
。这些字符在JSF组件ID中是allowed(冒号不是)。它会破坏UIComponent#findComponent()
查找。