複合コンポーネントで特定の親コンポーネント ID を取得する必要があります。タイトルに書いたように、ID のチェーン全体を取得する方法を見つけただけです#{cc.clientId}
。それは配信します (どのように呼ばれているかはわかりません)Id1:Id2:Id3
が、必要なのは だけId1
です。どうすれば入手できますか?
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 に答える