CSS类选择器中允许使用哪些字符/符号?我知道以下字符无效,但哪些字符有效?
~ ! @ $ % ^ & * ( ) + = , . / ' ; : " ? > < [ ] \ { } | ` #
Run Code Online (Sandbox Code Playgroud) 我一直在使用JSF处理一个简单的Java EE项目.
<h:form id="phoneForm">
<h:dataTable id="phoneTable">
</h:dataTable>
</h:form>
Run Code Online (Sandbox Code Playgroud)
我试图通过设置CSS #phoneTable { ... }
,但它不起作用.在客户端检查HTML源代码时,JSF生成的HTML表格似乎以形式获取客户端ID id="phoneForm:phoneTable"
.我无法应用CSS via #phoneForm:phoneTable { ... }
,因为冒号表示伪选择器的开始并导致错误.
我怎么能在CSS选择器中使用它呢?
这是JSF代码:
<h:inputText binding="#{bean.input}" />
Run Code Online (Sandbox Code Playgroud)
这里是支持bean的一部分用于绑定支持:
private HtmlInputText input;
public void setInput(HtmlInputText input) {
this.input = input;
}
public HtmlInputText getInput() {
return this.input;
}
Run Code Online (Sandbox Code Playgroud)
当我第一次打开页面时一切正常但是当我第二次打开它时(刷新或在另一个选项卡中打开相同的URL或任何其他方式)我得到重复的ID错误.错误消息表明<h:inputText>
没有唯一ID.以下是长错误消息的一部分:
java.lang.IllegalArgumentException: Component ID formId:inputId has already been found in the view
+id: inputId type: javax.faces.component.html.HtmlInputText@cafebabe
Run Code Online (Sandbox Code Playgroud)
添加binding
属性后出现问题.如果我删除它,一切都会再次正常工作.我如何正确使用binding
属性?
有活跃的JSF(或Primefaces)用户可以解释为什么默认情况下会发生这样的原因:为什么没有人对此做任何事情:
<p:commandLink id="baz" update=":foo:boop" value="Example" />
Run Code Online (Sandbox Code Playgroud)
哪个生成的标记在没有hacks的情况下无法在JavaScript或CSS中使用,通常应被视为无效:
<a href="javascript:void(0);" id=":foo:bar:baz">Example</a>
Run Code Online (Sandbox Code Playgroud)
id=":bar:baz:foo"
此处的属性包含冒号,这些冒号不是此属性的有效字符,至少从CSS角度来看.
虽然该属性可能根据规范有效,但它无法与真实的JavaScript和CSS实现一起使用.
简而言之,id
JSF中的默认属性生成无法用于前端开发.