1

私はタペストリーにかなり慣れていないので、選択コンポーネントから値を選択するときにゾーンを更新しようとしています。これは私がそれをやろうとしているところです:

    <t:Zone t:id="ispTypeZone" id="ispTypeZone">
                            <t:Select t:id="ispType"
                                t:blankLabel="[${message:select-label}]" t:zone="ispTypeZone"
                                t:value="ispType" event="valueChangedFromIspType"
                                disabled="${editable}" style="width:515px;"
                                t:blankOption="ALWAYS" t:validate="required"
                                />
                                </t:Zone>

    <t:Zone t:id="selectionZone" id="selectionZone">
                            <t:If t:test="${somethingSelected}">

                                <t:If test="${ispSelected}">
                                    <t:Zone t:id="ovZone" id="ovZone">
                                        <t:Select t:id="ovType" t:value="ovType"
                                            t:blankLabel="[${message:select-label}]" t:zone="ovZone"
                                            t:validate="required" event="valueChangedFromOvType"
                                            style="width:515px;" />
                                    </t:Zone>
                                    <p:else>
                                        <t:Zone t:id="vpZone" id="vpZone">
                                            <t:Select t:id="vpType" t:value="vpType"
                                                t:blankLabel="[${message:select-label}]" t:zone="vpZone"
                                                t:validate="required" event="valueChangedFromVpType"
                                                t:blankOption="ALWAYS" disabled="${editable}"
                                                style="width:515px;" />
                                        </t:Zone>
                                    </p:else>
                                </t:If>
                                <p:else>
                                </p:else>

                            </t:If>
                        </t:Zone>

ここでレンダーを呼び出します。

    void onValueChangedFromIspType(String ispType) {
    //some code here
    if (request.isXHR()) {
        ajaxResponseRenderer.addRender(selectionZone);
    }
    }

select コンポーネントから選択された値に関係なく、selectionZone のレンダリングがトリガーされますが、「動的更新用の Ajax Zone 'selectionZone' が見つかりません」というエラー メッセージが表示され続けます。エラー メッセージにもかかわらず、'somethingSelected' は引き続き実行されますが、次の選択コンポーネントは表示されません。問題が見つからないようですので、誰かが私を正しい方向に向けることができれば幸いです。

ありがとう。

4

1 に答える 1

0

ispType選択の変更でselectionZoneの何かを更新する必要がある場合、 t:zone はispTypeZone ではなく selectionZone にする必要があります。

クラスで、ゾーンを宣言します。

@InjectComponent
private Zone selectionZone;

onValueChange メソッドでは、単純な戻り値で十分です。

 void onValueChangedFromIspType(String ispType) {
//some code here
if (request.isXHR()) {
    return this.selectionZone;
}
}
于 2016-01-15T10:52:01.877 に答える