我正在使用form.warn方法添加警告消息,但未显示警告消息。如何在wicket表单上添加警告消息
public class FormPanel extends BreadCrumbPanel {
public FormPanel(String id, IBreadCrumbModel breadCrumbModel)
{
super(id, breadCrumbModel);
Form<?> form = new Form<Void>("form");
form.add(new SaveButton("save"));
form.add(new FeedbackPanel("feedback"));
}
private class SaveButton extends Button {
private static final long serialVersionUID = 1L;
public SaveButton(String id) {
super(id);
}
@Override
public void onSubmit() {
validate(getForm());
}
}
validate(Form<?> form){
if(some logic)
form.warn(“message”);
}
}
答案 0 :(得分:2)
您最好将验证逻辑移至IValidator#validate()
或IFormValidator#validate()
。
目前您在Button#onSubmit()
中调用它。这意味着Wicket认为一切都在您的表单字段中有效,并调用最后一步 - onSubmit()
。通常在onSubmit()
之后,您要么呈现完全不同的页面,要么呈现当前页面的新实例。在这两种情况下,当前页面实例都会与其表单及其反馈消息一起丢失。
如果IValidator#validate()
失败,则Wicket会调用onError()
代替并重新呈现当前页面实例。