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

Reply via email to