4

我不喜欢 JSF 如何使用冒号来分隔生成的 HTML 中的 ID,因为它会与 CSS 和 JavaScript 选择器发生冲突。而且我不喜欢总是逃避它的想法。因此,我想用其他字符替换它。有什么缺点吗?有没有常见的替代品?

4

2 回答 2

3

我不喜欢 JSF 如何使用冒号来分隔生成的 HTML 中的 ID,因为它会与 CSS 和 JavaScript 选择器发生冲突。而且我不喜欢总是逃避它的想法。

只需按类名选择元素吗?HTML 元素的性质真的如此独特以至于需要通过 ID 来选择吗?这通常仅适用于主要布局组件。


因此,我想用其他字符替换它。有什么缺点吗?有没有常见的替代品?

您可以使用任何您想要的字符,前提是它在 HTML 元素 ID/名称中有效,指定如下:

IDNAME标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

在冒号旁边,唯一明智的选择是连字符、下划线和句点。由于句点本身也是 CSS 选择器中的一个特殊字符,因此它会遇到与冒号相同的问题。-因此,从逻辑上讲,除了连字符和下划线之外,您别无选择_

至于缺点,肯定是有缺点的。您需要确保没有在 JSF 组件 ID 中的任何地方使用新的分隔符,<h:someComponent id="foo_bar" />例如_. 这些字符在 JSF 组件 ID 中是允许的(冒号是不允许的)。它会破坏UIComponent#findComponent()查找。

也可以看看:

于 2012-09-27T10:54:22.803 回答
3

嗯...基于对javax.faces.SEPARATOR_CHAR价值的简短谷歌搜索

似乎首选值是-or _(至少对于BalusC

您只需要保证自己没有在 JSF 组件 ID 的任何地方使用它

默认情况下,JSF 会生成不可用的 id,这些 id 与 web 标准的 css 部分不兼容

如何在 CSS 选择器中使用 JSF 生成的 HTML 元素 ID?

JSF的缺点,有点历史

于 2012-09-27T08:23:35.973 回答