Am Mittwoch, 30. April 2008 08:29:10 schrieb Martin Makundi:
> Hi!
>
> Please give me an example:
> MyData myData = new MyData(name, address); // pseudo
>
> add(new Label("name", new PropertyModel(myData, "name"));
> add(new Label("address", new PropertyModel(myData, "address"));
>
> // now I have an ajax button or something...
> @Override
> protected void onUpdate(AjaxRequestTarget target) {
> int stateChangeKey = (Integer) thisGadget.getModelObject();
> myData =
> ComplexBusinessLogicService.loadNewDataAccordingToState(stateChangeKey);
> }
I normally do it the following way
At the highest entry point (page mostly)
MyBusinessModelWithoutWicketStuff myModel = Service.createTheBusinessModel();
CompoundPropertyModel model = new CompoundPropertyModel(myModel);
myPage.setModel(model);
IModel pathToMySubModel = new PropertyModel(model, "property1");
MyPanel p1 = new MyPanel("id1", pathToMySubModel);
IModel pathToMyDeepestModel =
new PropertyModel(pathToMySubModel, "deepestModel");
MyPanel p2 = new MyPanel("id2", pathToMyDeepestModel);
and so on.
I imagine myself the connected property models as a path to my data.
Only the highest level component has the business instance set. All others
simply get the path to it.
> Now you mean if I wrap the myData into an IModel I do not need to
> change anything else except the first line:
> MyData myData = new MyData(name, address); // pseudo
> IModel myDataIModel = new MyIModel(myData);
>
> and replace it in the property models? Wow. So PropertyModel will be
> smart enough here on its own.
Simply try it. It works great.
cheers
Per
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]