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]