【问题标题】:Remove auto generated j_id from composite components从复合组件中删除自动生成的 j_id
【发布时间】:2011-07-11 12:21:38
【问题描述】:

我喜欢 jsf 2.0 复合组件设置。我喜欢的另一件事是 prependId="false" 在表单上。是否可以在 cc:interface 或 cc:implementation 中定义一个等效项,以防止 jsf 创建一个 j_id 以添加到复合组件中定义的 id 前面?

【问题讨论】:

  • 你的问题给了我答案:tks for prependId="false" 提示

标签: jsf composite-component


【解决方案1】:

这是不可能的。只需给组件一个固定的id,而不是让 JSF 自动生成一个。顺便说一句,这同样适用于表格。这样您仍然可以使用 CSS 选择器选择它们。

或者更好,只需给他们一个styleClass,这样您就不需要按 ID 选择,因为这种厌恶实际上是由于无法通过客户端 ID 选择组件/元素引起的(我没有看到其他可行的原因)。

【讨论】:

  • 那行得通。我从创意部门获得了所有的 html,能够使用他们交付的 id 会很好,但我敢打赌,如果我让他们知道格式,他们会为未来的项目更改它们。
  • 请注意,默认的 JSF 分隔符 : 在 CSS 中是非法的。您必须以\3A 的身份将它们转义(后面有空格)。但是,在 JSF 2.0 中,您可以将其配置为 web.xml 中的 javax.faces.SEPARATOR_CHAR 上下文参数。例如使用-(并确保您不要在固定ID的其他地方使用它)。
  • 非常酷。我们有充满 \3A 的样式表,所以替换它们会很好。
  • 非常正确,但仅供参考:使用 jQuery 时,可以通过转义来选择默认冒号,例如 $("#some\\:id").focus(); 代表 <input id="some:id">
  • @Arjan: 或$("[id='some:id']")。另见stackoverflow.com/questions/7927716/…
猜你喜欢
  • 1970-01-01
  • 2020-11-02
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2014-08-26
相关资源
最近更新 更多