我有一个捆绑了一些输入字段的复合组件。该组件将在一个页面上多次使用,并包含一个按钮来复制这些组件中另一个的值。为此,我需要通过其 clientId 访问其中一个兄弟姐妹作为
<f:ajax execute=":XXX:siblingId" render="...">
我的问题在于构建这个ID。我有兄弟姐妹的名字,我可以确保它与包含复制按钮的组件位于同一个命名容器中,但我无法控制完整的嵌套层次结构,所以它可能是:form:foo:bar:parent:child
或只是form:parent:child
. 所以基本上我想获取当前复合组件的前缀,但没有组件自己的 ID,然后附加要从中复制的组件的 ID。
这类似于以下问题:
但是,这两个答案都使用了 PrimeFaces 特定的功能,例如@parent
和widgetVar
,这不适用于我的项目。
在尝试 EL 的隐式对象时,我基本上尝试了与第二个问题的海报相同的东西——结果相同:cc.parent.clientId
总是空的。我也尝试cc.namingContainer.clientId
了两者的一些组合,唉 - 没有成功。parent
特别是不能按预期工作的事实让我感到困惑......
那么:是否有一种与组件库无关的方式来访问包含复合组件命名容器的“路径”?对象应该如何parent
工作,尤其是:我们什么时候可以使用它,什么时候不可以?
PS:我正在考虑使用组合的完整 clientId,然后用 修剪其实际 ID fn:split
,但是,如果有更直接的方式,我会很乐意使用它。