如何检索包含在 ui:include 中的 facelet 的 clientId?
对于可重用组件,我使用以下语法:cc.clientId
.
编辑1
问题是在确定绝对 id的上下文中。要包含动态编辑器,我使用自定义 include。
DynamicInclude、DynamicIncludeComponent 和 DynamicIncludeHandler 的源代码可以在:http ://pastebin.com/5e2dgR15 找到。我不得不删除在getSrc
DynamicInclude 的方法中测试 src 是否为 null 的行,并更改getFamily
为返回一个非 null 值。这是我在我的案例中可以找到和使用的唯一动态包含的实现。在这一刻,我没有知识做一个更好的。拥有动态包含对我的项目至关重要,因为它在很多地方都使用过(@BalusC:如果可能的话,我希望看到这样的组件被添加到 OmniFaces 中)。
我对绝对客户端 ID 的问题与为<custom:include>
. 在我的情况下是tabs:0:editorsGroup:4:editor3
. 我已经看到命名容器,例如<p:dataTable>
or <p:tabView>
,会在 id(tabs:0, editorsGroup:4) 中添加一个数字。我不确定这个自定义包含是否 100% 是 NamingContainer。DynamicIncludeComponent 实现 NamingContainer,但我不能将绝对客户端 ID 用作:tabs:editorsGroup:editor
.
对于来自确定绝对 idorganizationUnit
的编辑器,我在更新中使用了一种解决方法。使用,在 cc.clientId 的某些部分被删除后,计算了绝对客户端 ID。absolute_id_of_organization_unit
#{eval.getAbsoluteId(cc.clientId, 'organizationUnit')
我曾尝试在 a 的帮助下进行更新<p:remoteCommand>
,但没有成功。所以我认为我可以为organizationUnit
编辑器做一个类似的解决方法。为此,我必须获取父 ID,即 getAbsoluteId 方法的第一个参数。
这些是我奇怪的要求的原因。