3

我需要在复合组件中获取特定的父组件 ID。我只知道如何获取整个 ID 链,即如我在标题中所写:#{cc.clientId}. 它提供(我不知道他们如何称呼)Id1:Id2:Id3,但我只需要Id1,我怎样才能得到它?

4

1 回答 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 回答