0

我的 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,它适用于我页面其他位置的文本字段。但是在这里,我并没有真正看到 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);
}

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

4

1 回答 1

0

过失,解决方案在这里:

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

public void onTimeRestrictedChanged() {
    selectedTimeRestriction = TimeRestriction.TIME_RESTRICTED;
    ajaxResponseRenderer.addRender("timeRecZone", timeRecZone);
}
于 2013-05-17T07:34:21.227 回答