验证消息显示为setDefaultFormProcessing false wicket

时间:2015-08-11 13:07:29

标签: java validation wicket-1.6

我有一个包含validations(setrequired(true))字段的表单。 我还有两个按钮提交和取消。我希望验证显示在提交上,不应在取消时显示验证。我使用setDefaultFormProcessing(false)取消按钮。然后它不检查验证但显示验证消息。请建议我如何停止显示这些。 感谢,

private void initForm() {


final DateTextField rescheduledTdDate = new DateTextField(  "rescheduledTdDate");
        rescheduledTdDate.add(DateValidator.minimum(calendar.getTime())).setRequired(true);
add(rescheduledTdDate);
final TextField rescheduledTdTime= new TextField("rescheduledTdTime");
            rescheduledTdTime.setRequired(true);
            add(rescheduledTdTime);
            // submit button
            AjaxButton ajaxButton = new AjaxButton("submitButton") {
                private static final long serialVersionUID = 1L;



                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    super.onSubmit(target, form);

                    populateUpdateResult();

                    info("Customer Saved successfully!");
                    target.add(feedback);
                }

                @Override
                protected void onError(AjaxRequestTarget target, Form<?> form) {
                    super.onError(target, form);
                    error("Save failed, retry after sometime");
                    target.add(feedback);
                }
            };

            add(ajaxButton);

            // cancel button and action
            AjaxButton ajaxButton2 = new AjaxButton("cancelButton") {

                private static final long serialVersionUID = 1L;
                @Override
                protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                    super.onSubmit(target, form);
                    populateUpdateCancel(); 
                    info("Customer Saved successfully!");
                    target.add(feedback);
                }

                @Override
                protected void onError(AjaxRequestTarget target, Form<?> form) {
                    super.onError(target, form);
                    error("Save failed, retry after sometime");
                    target.add(feedback);
                }
            };

            ajaxButton2.setDefaultFormProcessing(false);
            add(ajaxButton2);
        }

1 个答案:

答案 0 :(得分:0)

以下示例代码(类似于您的方案)正常工作。请注意取消onSubmit中的setResponsePage(TestPage3.class)(重新加载页面)。

爪哇:

public class TestPage3 extends WebPage {

    FeedbackPanel feedbackPanel;

    public TestPage3(final PageParameters parameters) {

        feedbackPanel = new FeedbackPanel("feedback");
        feedbackPanel.setOutputMarkupId(true);
        add(feedbackPanel);

        Form<Void> form = new Form<Void>("form");
        add(form);

        addFormComponents(form);
    }

    private void addFormComponents(Form<Void> form) {

        addNameText(form);

        addSubmitButton(form);

        addCancelButton(form);
    }

    private void addCancelButton(final Form<Void> form) {
        AjaxButton cancelBtn = new AjaxButton("cancelBtn") {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                super.onSubmit(target, form);
                setResponsePage(TestPage3.class);
            }

            @Override
            protected void onError(AjaxRequestTarget target, Form<?> form) {
                super.onError(target, form);
                feedbackPanel.error("Validation failed...");
                target.add(feedbackPanel);
            }
        };

        cancelBtn.setOutputMarkupId(true);
        cancelBtn.setDefaultFormProcessing(false);
        form.add(cancelBtn);
    }

    private void addSubmitButton(final Form<Void> form) {
        AjaxButton submitBtn = new AjaxButton("submitBtn") {
            @Override
            protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
                super.onSubmit(target, form);
            }

            @Override
            protected void onError(AjaxRequestTarget target, Form<?> form) {
                super.onError(target, form);
                feedbackPanel.error("Validation failed...");
                target.add(feedbackPanel);
            }
        };
        form.add(submitBtn);
    }

    private void addNameText(Form<Void> form) {
        TextField<String> text = new TextField<String>("nameTxt");
        text.setOutputMarkupId(true);
        text.setRequired(true);

        form.add(text);
    }
}

标记:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:wicket>
<head>
</head>
<body>
<div wicket:id="feedback"></div>
<form wicket:id="form">
    <input type="text" wicket:id="nameTxt"/>
    <input type="submit" wicket:id="submitBtn" value="Submit"/>
    <input type="submit" wicket:id="cancelBtn" value="Cancel"/>
</form>
</body>
</html>