忍者ブログ
[65] [64] [63] [62] [61] [60] [59] [58] [57] [56] [55]

DATE : 2024/03/19 (Tue)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/05/24 (Wed)

コンポーネント ID

DataScroller では、ページ単位で表示を行う一覧(DataTableなどのjavax.faces.component.UIData)を指定するために、そのコンポーネントの ID を t:dataScroller の for 属性に設定します。

例えば、「items」というコンポーネント ID の DataTable を DataScroller に指定するときは、次のようなコードになります。

(「...」の部分は省略部分です)
...
<f:view>

    <f:form>

        <h:dataTable id="items" ...>
            ...
        </h:dataTable>

        <t:dataScroller for="items" ...>
            ...
        </t:dataScroller>

    </f:form>

</f:view>
...

上の例では、1つの f:form 要素の中に h:dataTable 要素と t:dataScroller 要素があります。

しかし、 h:dataTable と t:dataScroller とで別々の f:form 要素が必要な場合はどうなるでしょうか。例えば、 h:dataTable では表内のボタンを押すと別ウィンドウで詳細な情報を表示し、 t:dataScroller のボタンを押すと同じウィンドウでページの切り替えを行うという場合です。素直に上記の例を書き換えると、次のようになります。

...
<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 が見つからないというエラーが出ます。

この理由は、コンポーネント ID は同じ階層で一意であれば良いという条件に基づきます。初めの例の場合、h:dataTable と t:dataScroller は同じ f:form 要素の直下にあるので同じ階層にあります。しかし、次の例では h:dataTable と t:dataScroller は別々の f:form 要素の直下にあるため、違う階層にあります。

同じ階層であればコンポーネント ID が一意ということは、逆に言えば階層が違えばコンポーネント ID は重複しても良いということになります。

これが、先程のエラーの原因です。for 属性で item という ID 持つ h:dataTable を指定したものの、t:dataScroller よりも上の階層や別の階層では ID が重複している可能性があるため、他の階層にある h:dataTable を特定できない仕様になっているのです。

そこで、ID の指定の仕方を少し変える必要がでてきます。

つづきます

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
ブログ内検索
最近の状況
リンク
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック