Matthew
Matthew

Reputation: 55

wicket persistent object between panels

In wicket without saving to the session how can i have a persistent object for example a list which can be set in one panel and accessed from another. Iv done a lot of googleing and im not entirely sure how this would work. Any help would be appreciated greatly! Thank you.

Upvotes: 0

Views: 1334

Answers (1)

jensgram
jensgram

Reputation: 31518

Related to the comments above, I will try and explain what I was thinking.

Disclaimer: It's been more than a year since I worked with Wicket, so the following should be read as an overall proof-of-concept. I cannot guarantee that it will compile (actually, I can almost certainly guarantee that it will not.)

public class MyPage extends ... {
    ...
    MyPageModel pm = new MyPageModel();
    add(new MyPanel1(pm));
    add(new MyPanel2(pm));
    ...
}

public class MyPageModel implements Serializable {
    private IModel<List<MyDataObject>> dataObjects;

    public MyPageModel() {
        this.dataObjects = // Load list from somewhere
    }

    public IModel<List<MyDataObject>> getDataObjects() {
        return this.dataObjects;
    }
}

public class MyPanel1 extends ... {
    private MyPageModel pageModel;

    public MyPanel1(MyPageModel pageModel) {
        this.pageModel = pageModel;
        ...
        add(new ListSomethingComponent<MyDataObject>(pageModel.getDataObjects)); // Some list renderer component which takes a IModel<List<MyDataObject>> as data
    }
}

public class MyPanel2 extends ... {
    private MyPageModel pageModel;

    public MyPanel2(MyPageModel pageModel) {
        // Same as MyPanel1...
    }
}

Upvotes: 2

Related Questions