Since a Wicket WebPage has it's constructor invoked only one time in the
application lifecycle
Usually a new page instance is created each time you visit a bookmarkable url.
WebPages are never shared between clients.
Sven
On 02/18/2013 06:47 PM, Michael Chandler wrote:
Good morning/afternoon everyone.
I'm having a basic problem fully deciphering how to best manage my forms,
specifically related to Models that are attached to forms. Since a Wicket
WebPage has it's constructor invoked only one time in the application
lifecycle, I'm failing to fully understand how to present a form that has a
model bound to it without inadvertently sharing that instance of the Model with
every user of the application. It seems like a fundamental issue that I'm
failing to fully grasp and could use some input.
As an example, I have the following in my constructor:
LoadableDetachableModel<Job> jobModel = new LoadableDetachableModel<Job>() {
private static final long serialVersionUID = 1L;
@Override
protected Job load() {
Job job = (Job) EntityFactory.getInstance().getBean("job");
// if we're editing an existing job, load the object
if (jobId >= 1) {
job.load(jobId);
}
return job;
}
};
I later create a form and after adding it in my constructor, bind the model to
it as follows:
jobForm.setModel(new CompoundPropertyModel<Job>(jobModel));
As you can imagine, every user session from this point on now has that instance
of a Job object bound to that form due to these declarations being in the page
constructor. I have come a long way on my own, but I'm at a point where I
clearly do not have a full grasp of how to best approach this. I suspect I can
potentially override an instance of a Model's getObject() method for more
dynamic behavior, but I'm concerned about writing code that becomes too verbose
when perhaps there's a better/tighter way to handle this. Can anyone advise me?
Many thanks!
Mike Chandler
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]