【问题标题】:How to read listbox's PropertyModel state from onUpdate() event of AjaxCheckBox - Apache Wicket如何从 AjaxCheckBox 的 onUpdate() 事件中读取列表框的 PropertyModel 状态 - Apache Wicket
【发布时间】:2011-07-04 10:21:18
【问题描述】:

问题:用户在多选列表框中进行了一些选择,然后按下复选框,选择丢失。我需要保留所选内容。

我有一个扩展的报告向导 (wicket.extensions.wizard.Wizard) 我有一个扩展 WizardStep.WizardStep 的步骤 在这一步中,我有一个扩展 wicket.markup.html.form.ListMultipleChoice 的多选框 我添加如下:


final ChooseListMultipleChoice allPlansChoiceField = new ChooseListMultipleChoice(PLANS_SELECT_ALL_PLANS_LIST, new PropertyModel(this, "selectedAllPlans"), allPlans);
allPlansChoiceField.setOutputMarkupId(true);
add(allPlansChoiceField);

我也有 AjaxCheckBox (wicket.ajax.markup.html.form.AjaxCheckBox) 像这样使用:


  AjaxCheckBox displayArchived = new AjaxCheckBox(DISPLAY_ARCHIVED){
            protected void onUpdate(final AjaxRequestTarget target) {
                allPlans.clear();
                final boolean isDisplayArchived = rawReportFilterInput.isDisplayArchived();
                List listAllPlan = projectFacade.listActiveAndClosingPlans(isSort, isDisplayArchived);
                allPlans.addAll(listAllPlan);
                target.addComponent(allPlansChoiceField);
            }
        };
        add(displayArchived);

在 onUpdate 方法中,模型“selectedAllPlans”不会根据当前用户选择进行更新。例如,如果我只有一个简单的 ajax 提交按钮,那么它将触发 onSubmit 事件并且所有表单数据都将被传递,并且“selectedAllPlans”将填充用户选择。 当用户选中/取消选中 AjaxCheckBox 时,我需要完全相同的行为。到目前为止,我还不能让它工作,模型总是 size = 0。

标记:

<div class="effortsReport" style="height: 220px;">
<table>
    <tr>
        <input type="checkbox" wicket:id="plansSelect.displayArchived">
        <br><div class="fixed_select"><select wicket:id="allPlansList"/></div></td>
    </tr>
</table>
</div>

我会很感激一些建议,可能的解决方案。 最好的祝福, 奥列格

【问题讨论】:

    标签: ajax forms checkbox submit wicket


    【解决方案1】:

    好的,我想通了,就这样做:

    allPlansChoiceField.add(new AjaxFormComponentUpdatingBehavior("onchange") {
            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                target.addComponent(allPlansChoiceField);
            }
        });
    

    仅此而已。您甚至不需要存储/恢复状态,它就可以工作。是的,发现这一点需要时间,但最终它是可能且容易的。一定会喜欢 Wicket。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      相关资源
      最近更新 更多