Hi, > When I use "this", the component class should provide the properties. > This part I don't understand.
PropertyModel doesn't care which object holds the property. In your code the ProductDetails panel has a property "model", that's all.
Sven Am 12.07.2010 14:16, schrieb Mansour Al Akeel:
Thank you. It worked. But I am missing something. see the comments please. On Sun, Jul 11, 2010 at 6:35 PM, Sven Meier<[email protected]> wrote:Hi, a usual error when working with models: new PropertyModel<String>(model, "id") Note you're passing around a reference to the initial model. Later updates of this member will not change any other reference held anywhere else. You'd have to do it this way instead: add(new Label("id", new PropertyModel<String>(this, "model.id")));When I use "this", the component class should provide the properties. This part I don't understand. I read the wiki about models, but still missing something.But since you're using a CompoundPropertyModel already, why not let is do the heavy lifting? public class ProductDetails extends Panel { public ProductDetails(String id, Product product) { super(id); setOutputMarkupId(true); this.setCurrentProduct(product); add(new Label("id")); add(new Label("codProduct")); add(new Label("tpVat")); } public void setCurrentProduct(Product product) { setDefaultModel(new CompoundPropertyModel<Product>(product)); } } HTH Sven On 07/11/2010 05:54 AM, Mansour Al Akeel wrote:I have a panel that displays a product info : public class ProductDetails extends Panel { private IModel<Product> model; public ProductDetails(String id, Product product) { super(id); setOutputMarkupId(true); this.setCurrentProduct(product); add(new Label("id", new PropertyModel<String>(model, "id"))); add(new Label("codProduct", new PropertyModel<String>(this.model, "codProduct"))); add(new Label("tpVat", new PropertyModel<String>(this.model, "tpVat"))); } public void setCurrentProduct(Product product) { this.model = new CompoundPropertyModel<Product>(product); } } I am trying to update it from a link in another panel: AjaxLink<String> link = new AjaxLink<String>("link") { { add(new Label("id", new PropertyModel<String>(model, "id"))); } @Override public void onClick(AjaxRequestTarget target) { Product product = item.getModelObject(); productDetails.setCurrentProduct(product); target.addComponent(productDetails); System.out.println(target.toString()); } }; item.add(link); Updates are not shown. I believe the issue is with the Model I am using (IModel<Product>). However, I don't know the alternative model I should be using (if it's a model issue). Product is a JPA entity. Any ideas ? example ? thanx --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
