English 中文(简体)
默认情况下,JSF生成无法使用的身份证,不符合网络标准的CSS部分。
原标题:By default, JSF generates unusable IDs, which are incompatible with the CSS part of web standards

一个活跃的 JSF (或Primefaces) 用户能否解释为什么默认发生这种情况,

<p:commandLink id="baz" update=":foo:boop" value="Example" />

产生无法在没有黑客的情况下用于 JavaScript 或 CSS 的标记, 且通常应被视为无效 :

<a href="javascript:void(0);" id=":foo:bar:baz">Example</a>

id=" :bar:baz:foo 属性包含冒号, 但它不是此属性的有效字符, 至少从 CSS 角度来说 。

虽然根据规格,属性可能有效,但它无法与现实世界的JavaScript和CSS的实施相配合。

简言之, JSF 中的默认 id 属性生成无法用于前端开发 。

最佳回答

: 之所以被选中,是因为这个唯一明智的分隔符字符能够保证最终用户不会意外地将其用于JSF组成部分ID(即http://docs.oracle.com/javaee/6/api/javax/faces/upport/UIComponent.html#setId%28java.lang. rel="noreferr"29。String%29" rel="norefererr" >valided ) 和 ,因为可以通过 将其用于CSS选择者。

请注意,“http://www.w3.org/TR/html4/types.html#h-6.2' rel=“noreferrer”>>HTML4spec 表示,在 id 中,结肠是 valid 值。因此,你抱怨说它不符合“web标准”是一无所获。

<强度 > ID 和 <强度 > NAME 符号必须从字母开始([A-Za-z]),然后可以是字母、数字([0-9])、连字符("-")、下划线("_")、冒号(":")和句号(")。

唯一的问题是 : 是 CSS 选择器中的一个特殊字符, 需要逃跑 。 JUS 本身对冒号没有问题 。 document. getElementById (“ foo:bar”) 完全正常。 唯一的可能问题是 jQuery, 因为它使用 CSS 选择器语法 。

如果您真的需要,那么您总是可以更改默认分隔字符 < code> : ,方法是设置 javax.faces.Separator_CHAR 上下文参数,例如 - 。您只需要保证在 JSF 组件 ID 自己 < /em> 中,您不会在任何地方使用该字符( 它没有被验证! ) 。

<context-param>
    <param-name>javax.faces.SEPARATOR_CHAR</param-name>
    <param-value>-</param-value>
</context-param>

在JSF自动生成的识别码,如 j_id1 中还存在额外的不利之处,因此,您还应确保all NamingContainer 各页都有固定的识别码,而不是自动生成的。 否则 JSF会难以找到容器子的命名 。

我只会不推荐它。 它只是长期的混淆和易碎。 要再次思考它, 普通 JSF Webap 中的独特元素本身通常不会在表格或表格中出现。 它们一般只是代表主要布局方面 。 我认为, 否则, 它在 HTML/ CSS 角度上是一个错误的设计。 只需用可重复使用的 CSS 类名称而不是 ID 来选择它们。 如果您真的需要的话, 您可以用普通 HTML 来包住它, 其ID不会由 JSF 预先设定 。

See also:

问题回答

暂无回答




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...