public class ProductDetails extends Panel { @EJB private ProductServicesLocal productServices; private Product product; public ProductDetails(String id, Product product) { super(id); setOutputMarkupId(true); this.theModel = new CompoundPropertyModel(product); add(new Label("id")); Form form = new Form("form", this.theModel); form.add(new AjaxEditableLabel("codProduct")); add(new AjaxLink("save") { @Override public void onClick(AjaxRequestTarget target) { System.out.println("saving product .... "); } }); add(form); } public void setCurrentProduct(Product product) { this.theModel.setObject(product); } } This is from another component to update the panel: @Override public void onClick(AjaxRequestTarget target) { Product product = item.getModelObject(); productDetails.setCurrentProduct(product); target.addComponent(productDetails); System.out.println(product.getId()); } }; item.add(link);