Tapestry5区域不会使用zoneUpdater更改单选按钮更改

时间:2013-05-16 09:42:31

标签: java ajax radio-button tapestry

我的Tapestry5页面上有2个单选按钮,我希望在值更改时更新区域:

<t:radio t:id="allDay" t:mixins="zoneUpdater" t:event="allDayChanged" t:clientEvent="change" zone="timeRecZone"/>
<t:radio t:id="timeRestricted" t:mixins="zoneUpdater" t:event="timeRestrictedChanged" t:clientEvent="change" zone="timeRecZone"/>

<t:zone t:update="show" elementName="div" t:id="timeRecZone" id="timeRecZone">
    <t:if test="timeRestrictedSelected">
                    .
                    .
                    .

我正在使用已知的zoneUpdater mixin,对于我在我页面的其他位置使用textfield工作正常。但是在这里,我并没有真正看到timeRecZone得到更新,因为IF条件下的区域没有显示,当我点击无线电时我没有看到跟踪语句。

public boolean isTimeRestrictedSelected() {
    log.info("***** isTimeRestrictedSelected...");
    return selectedTimeRestriction == TimeRestriction.TIME_RESTRICTED;
}

这部分(改变事件)有效:

public void onAllDayChanged() {
    selectedTimeRestriction = TimeRestriction.ALL_DAY;
    log.info("***** allDayChanged called: " + selectedTimeRestriction);
}

public void onTimeRestrictedChanged() {
    selectedTimeRestriction = TimeRestriction.TIME_RESTRICTED;
    log.info("***** timeRestrictedChanged called: " + selectedTimeRestriction);
}

有没有人在使用无线电/区域更新时遇到过这种情况?非常感谢。

1 个答案:

答案 0 :(得分:0)

Mea culpa,解决方案在这里:

public void onAllDayChanged() {
    selectedTimeRestriction = TimeRestriction.ALL_DAY;
    ajaxResponseRenderer.addRender("timeRecZone", timeRecZone);
}

public void onTimeRestrictedChanged() {
    selectedTimeRestriction = TimeRestriction.TIME_RESTRICTED;
    ajaxResponseRenderer.addRender("timeRecZone", timeRecZone);
}