Hi,
it's the "outdated reference" problem (as often when something goes
wrong with models):
new PropertyModel<String>(getDefaultModel(), "codProduct"))
Note that you're putting the current default model into another model.
Later on you change the default model:
setDefaultModel(new CompoundPropertyModel<Product>(product))
How should your PropertyModel be aware of this change?
BTW Martijn's statement is incorrect:
>If you look at the source code for AjaxEditableLabel you could've seen
>that it is not suited for CompoundPropertyModel usage.
AjaxEditableLabel is very well capable of working with
CompoundPropertyModels, see AjaxEditableLabel#getParentModel().
Regards
Sven
On 07/15/2010 04:29 PM, Mansour Al Akeel wrote:
Hello Martrin, and Ernesto,
it's still not working. I have this ProductPanel to be updated and
(possibly edited). It shows the product info when an item is clicked.
Here's the code for the Product Panel:
public class ProductDetails extends Panel {
@EJB
private ProductServicesLocal productServices;
public ProductDetails(String id, final Product product) {
super(id);
setOutputMarkupId(true);
this.setCurrentProduct(product);
add(new Label("id"));
add(new AjaxEditableLabel<String>("codProduct",
new PropertyModel<String>(getDefaultModel(),
"codProduct")));
add(new Label("tpVat"));
add(new AjaxLink<String>("save") {
@Override
public void onClick(AjaxRequestTarget target) {
System.out.println("saving product .... ");
}
});
}
public void setCurrentProduct(Product product) {
setDefaultModel(new CompoundPropertyModel<Product>(product));
}
}
And here's the code for the item to update the 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(product.getId());
}
};
item.add(link);
The problem with this code, is the Editable Label doesn't update with
the rest of the labels. I mean if I click on an item, it shows me the
results for the corresponding product in the Labels, but not in the
AjaxEditableLabel.
On Thu, Jul 15, 2010 at 3:48 PM, Martin Makundi
<martin.maku...@koodaripalvelut.com> wrote:
you need to add the updated panel into target:
target.addComponent(panelToBeUpdated);
2010/7/15 Mansour Al Akeel<mansour.alak...@gmail.com>:
I just tried it. It doesn't update the panel. Here's the full code:
public class ProductDetails extends Panel {
@EJB
private ProductServicesLocal productServices;
public ProductDetails(String id, final Product product) {
super(id);
setOutputMarkupId(true);
this.setCurrentProduct(product);
add(new Label("id"));
add(new AjaxEditableLabel<String>("codProduct",
new
PropertyModel<String>((Product)getDefaultModelObject(), "codProduct")));
add(new AjaxLink<String>("save") {
@Override
public void onClick(AjaxRequestTarget target) {
System.out.println("saving product .... ");
}
});
}
public void setCurrentProduct(Product product) {
setDefaultModel(new CompoundPropertyModel<Product>(product));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org