我是Wicket的新手。有人可以告诉我如何将required
动态设置为false
吗?这是我的代码:
AjaxButton cancel=new AjaxButton("cancel"){
public void onSubmit(AjaxRequestTarget target, Form form){
passwrd.setRequired(false);
nameField.setRequired(false);
usernameField.setRequired(false);
LecturerPage lecturer=new LecturerPage();
setResponsePage(lecturer);
}
};
addstud.add(cancel);
Tomcat告诉我我的反馈面板没有被渲染(我的OK按钮使用反馈面板)。
答案 0 :(得分:5)
onSubmit()方法仅在完成所有验证后才执行,因此甚至不执行此代码。
但是,您经常需要执行某些操作而不进行任何验证(例如“取消”按钮)。你可以做那个叫
cancel.setDefaultFormProcessing(false);
这样,Wicket将忽略验证和表单更新,并立即执行onSubmit()方法。
然后,您的代码将如下所示:
AjaxButton cancel = new AjaxButton("cancel") {
public void onSubmit(AjaxRequestTarget target, Form form){
setResponsePage(new LecturerPage());
}
};
cancel.setDefaultFormProcessing(false);
Wicket抱怨没有呈现的反馈是因为你没有调用setDefaultFormProcessing(false),它会处理表单,尝试验证其字段,并发现错误。并且,在请求周期结束时,错误消息将不会显示在任何位置,因为您没有请求重新呈现FeedbackPanel。要在ajax表单上显示验证错误,您必须覆盖AjaxButton.onError()方法:
AjaxButton save = new AjaxButton("save") {
public void onSubmit(AjaxRequestTarget target, Form form) {
// whatever. won't run if any validation fails
}
public void onError(AjaxRequestTarget target, Form<?> form) {
target.addComponent(feedbackPanel);
}
};