无法找到动态更新的ajax区域

时间:2014-12-09 13:46:58

标签: ajax tapestry zone

我对Tapestry很新,我在从select组件中选择一个值时尝试更新区域。这就是我试图这样做的地方:

    <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的渲染,但我不断收到错误消息&#34;无法找到Ajax Zone&#39; selectionZone&#39;用于动态更新&#34;。尽管出现了错误消息,但是选择了一些&#39; somethingSelected&#39;仍在执行,但未显示以下选择组件。我似乎无法找到问题,所以如果有人能指出我正确的方向,我会很感激。

感谢。

1 个答案:

答案 0 :(得分:0)

如果你的 ispType 选择更改必须更新 selectionZone 中的内容,那么t:zone应该 selectionZone 而不是 ispTypeZone

在您的班级中,声明您的区域:

@InjectComponent
private Zone selectionZone;

在你的onValueChange方法中,一个简单的返回就足够了:

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