检票口版本:1.6.11
假设我Textfield
在动态向导页面上有一个启用 Ajax 的组件。当我单击该组件时,我想禁用向导按钮栏上的“下一步”按钮,直到用户按下回车键。
在浏览了各种向导类的代码之后WizardButtonBar
,我认为使用向导按钮的标准实现是不可能的。
只是在这里问这个问题,如果我错了,有人可以纠正我,或者提出上述替代方案。
检票口版本:1.6.11
假设我Textfield
在动态向导页面上有一个启用 Ajax 的组件。当我单击该组件时,我想禁用向导按钮栏上的“下一步”按钮,直到用户按下回车键。
在浏览了各种向导类的代码之后WizardButtonBar
,我认为使用向导按钮的标准实现是不可能的。
只是在这里问这个问题,如果我错了,有人可以纠正我,或者提出上述替代方案。
您的 WizardStep 可以使用 #setComplete()/#isComplete() 来控制是否启用下一个按钮。
在 textField 上使用 AjaxFormComponentUpdatingBehavior,在 #onUpdate() 中将整个向导添加到 AjaxRequestTarget,以便更新向导的按钮。
好吧,为了其他需要帮助的人的利益。这就是我所做的。在包含 TextField 的类中,我传入了 Wizard 模型,该模型包含对各种组件的引用,例如 Wizard Form。使用它我可以获得默认的向导按钮,并将其设置为启用或不可见。
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);
}
});