是否有javax.faces.SEPARATOR_CHAR的常见替代品?

时间:2012-09-27 06:33:00

标签: java javascript html css jsf

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

2 个答案:

答案 0 :(得分:3)

嗯......基于javax.faces.SEPARATOR_CHAR

的短搜索

似乎首选值为-_(至少 BalusC

  

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

By default, JSF generates unusable ids, which are incompatible with css part of web standards

How to use JSF generated HTML element ID in CSS selectors?

Disadvantages of JSF, a bit of history

答案 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()查找。

另见: