call form.modelchanged()

-igor

On Mon, Jan 4, 2010 at 10:44 AM, Stijn Maller <stijn.mal...@gmail.com> wrote:
> I am currently facing an issue for which I would appreciate the input of
> more experienced wicket developers. As they are sparse in the company I work
> for I turn to this mailinglist.
>
> I have in my implementation a classic master-detail page. The master part is
> a RefreshingView, the detail view is a Panel with a Form on it to allow for
> updates. I have 1 single Model which is shared between the Page and the
> Panel. (Defined as member of the Page, passed into the Panel and the Form
> via their constructors) This all works like a charm (selecting, creating,
> updating, deleting, the works) even with some nice Ajax features thrown into
> the mix and everything.
>
> There is however 1 scenario that I can't get right. Things go pear shaped if
> the user gets validation errors during an update and then instead of
> correcting the validation errors he selects another detail in the master
> view. I'd obviously then want the detail to display the values of the newly
> selected ModelObject, instead I get the convertedValues from the previously
> selected ModelObject.
>
> I do know why this is happening: Model.setObject() doesn't do all the stuff
> that
> Form.setModelObject() does. (ie: clearing the convertedValues) What I don't
> know however is how to properly solve it. Calling Form.setModelObject() is
> not an option as it would mean exposing my form to the Page, which I do not
> want to do. It's supposed to be internal kitchen to the panel.
>
> What I would like to do is call Form.clearInput() whenever the ModelObject
> has been changed from outside the Panel. (ie A click on a row in the
> Refreshing view) But how can I detect this?
>
> Can anybody point me in the right direction of solving this the "wicket"
> way? So in Short:
>
> public Page {
>
>    private Model selected = new Model();
>
>    public Page() {
>            RefreshingView master = new RefreshingView("master") {
>
>                protected void populateItem(Item item){
>                    item.add(new AjaxEventBehavior("onClick"){
>                        // Problem occurs here!!! Under normal circumstances
> DetailPanel is
>                        // updated correctly with values of the new item.
>                        // But after a validation error it is not, then the
> convertedValues
>                        // of the previous item are displayed instead
>                        selected.setObject(item)
>                    }
>                    // rest of master code not relevant
>                    // ...
>                }
>            }
>            Panel detail = new DetailPanel("detail", selected);
>    }
>
> }
>
> public DetailPanel() implements Panel {
>
>    public DetailPanel(String id, Model model) {
>        Form detailForm = new Form("detailForm", model);
>        // rest of detail code not relevant
>        // ...
>    }
>
> }
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to