Wicket:动态启用/禁用向导按钮

时间:2013-11-07 16:04:30

标签: java wicket wicket-1.6

Wicket版本:1.6.11

假设我在动态向导页面上有一个Textfield组件,它启用了Ajax。当我点击该组件时,我想禁用向导按钮栏上的“下一步”按钮,直到用户点击回车键。

在浏览各种向导类的代码 - WizardButtonBar等之后,我认为这不可能通过向导按钮的标准实现来实现。

在这里提出问题的可能性是,如果我错了,有人可以纠正我,或者为上述内容提出替代方案。

2 个答案:

答案 0 :(得分:0)

您的WizardStep可以使用#setComplete()/#isComplete()来控制是否启用了下一个按钮。

在textField上使用AjaxFormComponentUpdatingBehavior,在#onUpdate()中将整个向导添加到AjaxRequestTarget,以便更新向导的按钮。

答案 1 :(得分:0)

为了其他需要帮助的人的利益。这就是我做的。在我的包含TextField的类中,我传入了向导模型,该模型包含对各种组件的引用,例如向导表单。使用这个我可以获得默认向导按钮,并将其设置为启用或不可见。

    Component label = new TextField<String>("paramText", new PropertyModel<String>(model, valueProperty));

    label.add(new AjaxFormComponentUpdatingBehavior("onchange") { 

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            Form wizardForm = wizardModel.getWizard().getForm();
            Button nextButton = (Button)wizardForm.getDefaultButton();
            nextButton.setVisible(false);

            target.add(nextButton);
            target.add(wizardForm);
            target.add((Wizard)wizardModel.getWizard());
            target.add(containerPanel);
        }
    });