Ok, so that 'almost' wraps this up. HypbridUrlCodingStrategy works perfectly
for the Ajax-added data.

My last problem is related to the form fields. In
AjaxFallbackButton.onSubmit ... I clean out the input that holds the value
I've just added to the database and redisplayed in a list to the user. But,
on subsequent manual browser refresh, the INPUT that I wiped refreshes with
the user's LAST INPUT.

I don't mind this for the title, content or other input fields on the page -
but I don't want values showing up that I manually removed. I think this is
part of standard browser/form fields behavior.

I think Mike's approach would work here: ie: javascript that clears this
input out on load. I 'never' want any values in this input on load. I know
how to write an IHeaderContributor - is there something similar to add a
body=onload? If not, my specific page (Java/html) doesn't really create the
<body> tag ... what is the best way to grab it so that I can possibly add a
behavior that would create an onLoad handler.

Or, is there a better, wicket way to make sure this input is empty on
browser refresh?

Thanks,

-Luther


            // add a category to the view
            // and clean out input that supplied it
            // dbase code intentionally left out

            final AjaxFallbackButton addCategoryButton = new
AjaxFallbackButton("add-category", new ResourceModel("m-add-category"),
this)
            {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onSubmit(final AjaxRequestTarget target,
                                        final Form<?> form)
                {
                    final IModel<String> model =
categoryCandidate.getModel();
                    final String text = model.getObject();

                    // make sure we should actually do something
                    if (text == null)
                    {
                        return;
                    }

                    // cleans out the form.INPUT
                    model.setObject(new String());

                    // add the new text to the categoriesModel (custom Set)
                    categoriesModel.add(text);

                    // redraw the form.INPUT
                    target.addComponent(categoryCandidate);

                    // redraw the <li> of categories
                    target.addComponent(categoriesParent);
                }

            };


To test the idea ... this works when placed in the markup after the input I
want to clean out:

                <script type="text/javascript">
                    document.getElementById("category_candidate1e").value =
'';
                </script>

But I can't leave this embedded in the HTML ... and I guess the ID can
change per wicket's whim. I need to add this to an body.onload event as a
behavior --- how to do I get ahold of the <body> element from within my
Page.java?

Reply via email to