我需要在复合组件中获取特定的父组件 ID。我只知道如何获取整个 ID 链,即如我在标题中所写:#{cc.clientId}
. 它提供(我不知道他们如何称呼)Id1:Id2:Id3
,但我只需要Id1
,我怎样才能得到它?
问问题
950 次
1 回答
2
您可以为此使用该fn:split()
功能:
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
...
#{fn:split(cc.clientId, ':')[0]}
另一种方法是UIComponent#getNamingContainer()
在UIComponent#getParent()
:
#{cc.parent.namingContainer.parent.namingContainer.clientId}
根据具体的功能要求和到目前为止的代码,可能会有更好的方法,这两种方法都在您的问题中缺失。例如,如果Id1
实际引用 a <h:form>
,那么您可以render="@form"
在<f:ajax>
.
顺便说一下,Id1:Id2:Id3
它只是称为客户端 ID(正如您在生成的 HTML 输出中看到的那样)。该Id1
部分实际上是组件 ID(正如您在 JSF 源代码中看到的那样)。NamingContainer
客户 ID 中的IDId1:Id2:Id3
前缀有时也称为木桩。
于 2012-01-12T18:45:58.347 回答