【发布时间】:2013-01-09 13:57:06
【问题描述】:
就我而言,我想刷新 ID 为 baseTab 的组件。如果表单main 和tabView tabs,则它本身包含在其中。对组件的绝对引用是main:tabs:baseTab。这就是我需要在更新属性中引用的内容:
<p:commandButton update="main:tabs:baseTab"/>
这种完整 ID 的问题在于它很长,并且当我更改组件层次结构中的某些内容时可以轻松更改。 ID baseTab 本身是唯一的,所以至少在理论上,我应该能够直接引用这个组件。但是我该怎么做呢?
通过唯一 ID 引用组件的语法是什么?我尝试了以下方法:
- :baseTab
- baseTab
- main:baseTab
- :tabs:baseTab
这些都不起作用,每个都导致页面错误,即此类组件不存在......
【问题讨论】:
-
How to reference components in JSF ajax? Cannot find component with identifier "foo" in view 的可能副本。你需要
:main:tabs:baseTab。 -
您只能通过 ID 直接引用组件,它们至少必须具有相同的父表单。我想这会对性能产生一些影响,Dom 处理器必须通过 DOM 树来梳理 id 而不是直接引用
-
它与 DOM 性能没有任何关系。整个 jQuery 是基于 DOM 搜索的,通过 ID 搜索,无论是否唯一,都是极快的操作。
-
您的
commandButton在此层次结构中的哪个位置?它在那个标签里吗? -
不,它在 mainForm 中的某个地方
标签: jsf jsf-2 primefaces