PrimeFaces中可能的命名容器有哪些?当我们想要在表单上更新某些UI控件时,为什么有必要为Ajax更新调用添加命名容器ID update=":mainForm:MainAccordian:userNameTextbox"
?
Man*_*uel 17
Prime面中可能的命名容器是什么
在JSF中,命名容器派生自UINamingContainer.
当我们想要使用update =":mainForm:MainAccordian:userNameTextbox"更新表单上的某些UI控件时,为什么有必要为Ajax更新调用附加命名容器ID
让我们说,<h:outputText value="test1" id="userNameTextbox" />
如果<h:outputText value="test2" id="userNameTextbox" />
您在页面中添加另一个,您将收到一条错误消息,表明您有一个重复的ID.您可以在JavaDoc中查找UIComponent.setId(String):
设置此UIComponent的组件标识符(如果有).组件标识符必须遵守以下语法限制:不能是零长度字符串.第一个字符必须是字母或下划线(' ').后续字符必须是字母,数字,下划线(' ')或短划线(' - ').
..此外,对你很重要:
指定的标识符在作为NamingContainer的最近的祖先UIComponent的后代的所有组件(包括facet)中必须是唯一的,或者如果没有这样的祖先是NamingContainer,则在整个组件树的范围内.
意味着您不能在同一个NamingContainer下拥有两个具有相同ID的组件(如果您根本没有NamingContainer,则整个树将被视为NamingContainer).因此,您需要添加一个NamingContainer,如<h:form id="myNamingContainer" />
让我们举个例子:
<h:outputText value="test1" id="userNameTextbox" />
<h:form id="container1">
<h:outputText value="test2" id="userNameTextbox" />
</h:form>
<h:form id="container2">
<h:outputText value="test3" id="userNameTextbox" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
..并且您想要对userNameTextbox进行更新.您指的是哪个userNameTextbox,因为有3个?
第一个?然后更新userNameTextbox
第二个?然后更新container1:userNameTextbox
第三个?然后更新container2:userNameTextbox
在IntelliJ扫描了我所有的JAR以获得javax.faces.component.NamingContainer
此处的实现之后,我发现了:
归档时间: |
|
查看次数: |
17970 次 |
最近记录: |