【问题标题】:Is there a common replacement for javax.faces.SEPARATOR_CHAR?javax.faces.SEPARATOR_CHAR 是否有一个常见的替代品?
【发布时间】:2012-09-18 21:18:41
【问题描述】:

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

【问题讨论】:

    标签: java javascript html css jsf


    【解决方案1】:

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

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


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

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

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

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

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

    另见:

    【讨论】:

      【解决方案2】:

      嗯...基于对 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

      【讨论】:

      • 使用-_时有什么缺点吗?
      • 不,我不认为以下 code.google.com/p/primefaces/issues/detail?id=490 是您应该考虑的缺点,但是 INMO 您可以使用默认的 : 分隔符正常工作,我正在工作使用大量 jquery 并且从未遇到过 : 的任何问题(不要考虑不时将其转义为真正的问题)
      猜你喜欢
      • 2017-03-25
      • 2013-08-23
      • 2010-09-13
      • 2013-01-29
      • 2011-01-19
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多