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実際に を参照している場合、代わりに を<h:form>使用できます。render="@form"<f:ajax>

ちなみに、これId1:Id2:Id3は単にクライアント ID と呼ばれるものです (生成された HTML 出力でわかるように)。このId1部分は、実際にはコンポーネント ID です (JSF ソース コードでわかるように)。NamingContainerクライアント IDのように ID を先頭に追加するId1:Id2:Id3ことは、ウッドストックと呼ばれることもあります。

于 2012-01-12T18:45:58.347 に答える