似乎我应该能够用半小时的时间搜索网页,但是因为我不能:
有效的JSF ID有哪些规则?
我读了一条乱码电子邮件,提示-
和_
存在限制,但我收到IllegalArgumentExceptions,我认为这是由于ID。
修改
java.lang.IllegalArgumentException: 6a945017207d46fd82b3d3bb7d2795f1
at javax.faces.component.UIComponentBase.validateId(UIComponentBase.java:549)
at javax.faces.component.UIComponentBase.setId(UIComponentBase.java:351)
at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:151)
答案 0 :(得分:18)
必须是有效的CSS identifier(ident
here),并且不应该重复。
在CSS中,标识符(包括selectors中的元素名称,类和ID)只能包含字符
[a-zA-Z0-9]
和ISO 10646字符U+00A1
及更高版本以及连字符({ {1}})和下划线(-
);它们不能以数字开头,也不能以数字后跟连字符开头。标识符还可以包含转义字符和任何ISO 10646字符作为数字代码(请参阅下一项)。例如,标识符_
可以写为"B&W?"
或"B\&W\?"
。
更新:对于您感兴趣的案例,以下是"B\26 W\3F"
提供的验证码源代码:
UIComponentBase#validateId()
然而,它比CSS规则更严格一些。它们也不能以连字符开头。