我使用AjaxFallbackButton来提交表单,并使用BeanValidation进行表单输入。和用于显示错误的FeedbackPanel。当我输入无效的内容时,表单不会提交,但feedbackpanel也不会显示。
onError,form.getFeedbackMessages()返回空数组。
Wicket版本6.18.0。
代码如下:
Form<Address> form = getForm();
add(form);
FeedbackPanel feedbackPanel = new FeedbackPanel("feedbackMessage");
feedbackPanel.setOutputMarkupId(true);
add(feedbackPanel);
public Form<Address> getForm() {
CompoundPropertyModel<Address> model = new CompoundPropertyModel<Address>(address);
final Form<Address> form = new Form<Address>("addressForm", model);
form.add(new Label("fNameLabel", new ResourceModel("fNameLabel")));
form.add(new Label("lNameLabel", new ResourceModel("lNameLabel")));
form.add(new Label("workLabel", new ResourceModel("workLabel")));
form.add(new Label("homeLabel", new ResourceModel("homeLabel")));
form.add(new TextField<String>("firstName").add(new PropertyValidator<String>()));
form.add(new TextField<String>("lastName").add(new PropertyValidator<String>()));
form.add(new TextField<String>("homeLocation").add(new PropertyValidator<String>()));
form.add(new TextField<String>("workLocation").add(new PropertyValidator<String>()));
form.add(new AjaxFallbackButton("submit", form) {
/**
*
*/
private static final long serialVersionUID = 6672729206839722437L;
@Override
protected void onError(final AjaxRequestTarget target, final Form form) {
Page page = target.getPage();
for (Component component : page.visitChildren()) {
String markupId = component.getMarkupId();
if (markupId.contains("feedbackMessage")) {
if (form.hasFeedbackMessage()) {
System.out.println(form.getFeedbackMessages());
}
}
}
}
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
if (address.getFirstName() != null) {
AddressGenerator.getInstance().add(address);
modalWindow.closeCurrent(target);
}
}
});
return form;
}表单是ModalWindow格式的。
发布于 2017-01-04 22:12:25
Component#getFeedbackMessages()为此组件实例返回消息only。它不会去探望孩子!
使用以下命令更新您的onError()方法:
@Override
protected void onError(final AjaxRequestTarget target, final Form form) {
target.add(feedbackPanel);
}您可以使用if (form.hasError()),但由于您是在AjaxFallbackButton#onError()中,这意味着存在错误。
https://stackoverflow.com/questions/41463756
复制相似问题