category: Java
DATE : 2006/05/26 (Fri)
DATE : 2006/05/26 (Fri)
(前回の記事)
コンポーネント ID の表現方法
コンポーネント ID を特定する方法として、相対表現と絶対表現があります。
- コンポーネント ID の相対表現
特定のコンポーネントを中心とした表現方法です。
例えば、次の例で、「form1」の f:form から「table」の h:dataTable を指定するとします。
... <f:view> <f:form id="form1"> <h:dataTable id="table" ...> ... </h:dataTable> </f:form> </f:view> ...
相対表現では、「form1:table」と表現します。
- コンポーネント ID の絶対表現
コンポーネントツリーのルートにあるコンポーネントを中心とした表現方法です。JSF では、f:view 要素がコンポーネントツリーのルートにあたります。
絶対表現を行うには、「:」を表現の先頭に付けます。
つまり、上の例の絶対表現は「:form1:table」となります。
ここで、前回の最後に示した例に戻ります。
... <f:view> <f:form target="_blank"> <h:dataTable id="items" ...> ... </h:dataTable> </f:form> <f:form> <t:dataScroller for="items" ...> ... </t:dataScroller> </f:form> </f:view> ...
t:dataScroller 要素の for 属性「items」は相対表現です。そのため、上の例では2つ目の f:form 要素内でコンポーネント ID が items の要素を探していることになります。
そこで、絶対表現に書き換えます。ファイルパスであれば、親ディレクトリを示す表記方法がありますが、コンポーネント ID にはそのような方法はないようです(調査不足かもしれません)。
まず、コンポーネント ID を表記しやすいように、1つめの f:form 要素に id 属性を付けます。
... <f:view> <f:form id="table_form" target="_blank"> <h:dataTable id="items" ...> ... </h:dataTable> </f:form> <f:form> <t:dataScroller for="items" ...> ... </t:dataScroller> </f:form> </f:view> ...
「table_form」という ID を付けました。
そして、 h:dataTable のコンポーネント ID を絶対表現で表します。絶対表現は、「:table_form:items」となります。
この絶対表現を t:dataScroller の for 属性にすれば、 t:dataScroller が h:dataTable を参照できるようになります。
... <f:view> <f:form id="table_form" target="_blank"> <h:dataTable id="items" ...> ... </h:dataTable> </f:form> <f:form> <t:dataScroller for=":table_form:items" ...> ... </t:dataScroller> </f:form> </f:view> ...(了)
PR
●この記事にコメントする
忍者ブログ [PR]