2012-01-12 9 views
2

私は、複合コンポーネント内の特定の親コンポーネントIDを取得しません。私はIDのチェーン全体を取得する方法を見つけました。つまり、タイトルに書いた通りです:#{cc.clientId}。それは(私は彼らがどのように呼び出されているか分からない)Id1:Id2:Id3を配信しますが、私はId1だけが必要です、どうすれば入手できますか?#{cc.clientId}から最初のコンポーネントIDを抽出する方法は?

答えて

1

あなたはこのためにthe fn:split() functionを使用することができます。

xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
... 

#{fn:split(cc.clientId, ':')[0]} 

もう一つの方法は、UIComponent#getParent()UIComponent#getNamingContainer()を使用することです:

#{cc.parent.namingContainer.parent.namingContainer.clientId} 

具体的な機能要件とコードをあなたに依存するより良い方法があるかもしれませんこれまでのところ、あなたの質問には両方とも欠けています。たとえば、Id1が実際に<h:form>を参照している場合は、<f:ajax>の代わりにrender="@form"を使用できます。

Id1:Id2:Id3はちょうどクライアントIDと呼ばれています(生成されたHTML出力のように)。 Id1の部分は、実際にはコンポーネントIDです(JSFソースコードのように)。クライアントIDのNamingContainerのIDの前には、Id1:Id2:Id3のように、「woodstocking」と呼ばれることもあります。

関連する問題