I register an error to the page in the model but the feedback message
doesn't show in FeedbackPanel.  Only the error message register in
onSubmit() event handler shows.  Please have a look.  Thanks!

HomePage.html:

<html>
<head></head>
    <span wicket:id="message">message will be here</span>
    <form wicket:id="form">
        <input type="text" wicket:id="word"/>
        <input type="submit" value="Enter" wicket:id="submitButton"/>
    </form>
    <span wicket:id="feedback">FEEDBACK</span>
</html>


HomePage.java

import ...

public class HomePage extends WebPage {    private static final long
serialVersionUID = 1L;

    private String word;

    public HomePage(final PageParameters parameters) {

        add(new
FeedbackPanel("feedback").setOutputMarkupPlaceholderTag(true));
        // if the word 'blowup' is entered, this model register a error
message to the page
        IModel model = new Model() {            private static final long
serialVersionUID = 1L;
            @Override public Object getObject() {
                if (word != null && word.equals("blowup")) {
                    word = "-b-l-o-w-u-p-";
                    HomePage.this.fatal("This message is from model.");
                    return "BAD THING HAPPENED IN MODEL";
                } else {
                    return "The word is: \"" + (word == null ? " n u l l " :
word) + "\"";
                }
            }
        };
        add(new Label("message", model).setOutputMarkupId(true));
        Form form = new Form("form", new CompoundPropertyModel(this));
        add(form);
        form.add(new TextField("word").setRequired(true));

        AjaxFallbackButton submitButton = new
AjaxFallbackButton("submitButton", form) {
            private static final long serialVersionUID = 1L;
            @Override protected void onSubmit(AjaxRequestTarget target, Form
f) {
                if (word != null && word.equals("blowup")) {
                    HomePage.this.error("This message is from onSubmit.
There should also be a message from model");
                }
                if (target != null) {
                    target.addComponent(HomePage.this.get("feedback"));
                    target.addComponent(HomePage.this.get("message"));
                }
            }

            @Override protected void onError(AjaxRequestTarget target, Form
f) {
                target.addComponent(HomePage.this.get("feedback"));
// show updated error feedback
            }
        };
        form.add(submitButton);
    }
}

Reply via email to