【发布时间】:2011-07-11 12:21:38
【问题描述】:
我喜欢 jsf 2.0 复合组件设置。我喜欢的另一件事是 prependId="false" 在表单上。是否可以在 cc:interface 或 cc:implementation 中定义一个等效项,以防止 jsf 创建一个 j_id 以添加到复合组件中定义的 id 前面?
【问题讨论】:
-
你的问题给了我答案:tks for prependId="false" 提示
我喜欢 jsf 2.0 复合组件设置。我喜欢的另一件事是 prependId="false" 在表单上。是否可以在 cc:interface 或 cc:implementation 中定义一个等效项,以防止 jsf 创建一个 j_id 以添加到复合组件中定义的 id 前面?
【问题讨论】:
这是不可能的。只需给组件一个固定的id,而不是让 JSF 自动生成一个。顺便说一句,这同样适用于表格。这样您仍然可以使用 CSS 选择器选择它们。
或者更好,只需给他们一个styleClass,这样您就不需要按 ID 选择,因为这种厌恶实际上是由于无法通过客户端 ID 选择组件/元素引起的(我没有看到其他可行的原因)。
【讨论】:
: 在 CSS 中是非法的。您必须以\3A 的身份将它们转义(后面有空格)。但是,在 JSF 2.0 中,您可以将其配置为 web.xml 中的 javax.faces.SEPARATOR_CHAR 上下文参数。例如使用-(并确保您不要在固定ID的其他地方使用它)。
$("#some\\:id").focus(); 代表 <input id="some:id">。
$("[id='some:id']")。另见stackoverflow.com/questions/7927716/…