i would use repeatingview rather then the listview, or at least call
listview.setreuseitems(true)

-igor

On Sat, Jul 18, 2009 at 10:31 AM, Agus Purnomo<furunom...@gmail.com> wrote:
> Ow yeah... Looks like I can get away with this :
>
> === ProductEdit.html ===
>
> <form wicket:id="productEditForm">
>    <table width="100%" cellpadding="0" cellspacing="5">
>        <tr valign="top" wicket:id="productDetailList">
>            <td><span wicket:id="fieldName">FIELD_NAME</span></td>
>            <td><input type="text" size="50" maxlength="100"
> wicket:id="productDetailField"/></td>
>        </tr>
>        <tr valign="top">
>            <td></td>
>            <td><input type="submit" value="Edit" class="Button" /></td>
>        </tr>
>    </table>
> </form>
>
> === ProductEditForm.java ===
>
> public class ProductEditForm extends Form {
>
>   �...@ejb(name = "LearnWicketEJB/ProductService")
>    private ProductService productService;
>
>    private ListView productDetailList;
>
>    public ProductEditForm(String componentName, final Product product) {
>
>        super(componentName);
>        this.product = product;
>
>        this.add(productDetailList = new ListView("productDetailList",
> this.productService.getProductDetailsByProductId(product.getId())) {
>           �...@override
>            protected void populateItem(final ListItem item) {
>                final ProductDetail productDetail = (ProductDetail)
> item.getModelObject();
>                item.add(new Label("fieldName",
> productService.getField(productDetail.getFieldId()).getName() + " :"));
>                item.add(new TextField("productDetailField", new
> PropertyModel(productDetail, "content")));
>            }
>        });
>
>    }
>
>   �...@override
>    public void onSubmit() {
>
>        for (Object object : this.productDetailList.getModelObject()) {
>            ProductDetail productDetail = (ProductDetail) object;
>
> this.productService.updateProductDetail(productDetail.getProductId(),
> productDetail.getFieldId(), productDetail.getContent(),
> productDetail.getNotApplicable());
>        }
>
>        this.setResponsePage(new
> ProductConfirmation(ProductConfirmation.CONFIRMATION_TYPE_EDIT));
>
>    }
>
> }
>
> === End of Code ===
>
> I've realized that the ListView in the form generate unique field name
> (which is exactly what I need) :
>
> <tr valign="top">
>    <td><span>Manufacturer :</span></td>
>    <td><input type="text" size="50" maxlength="100" value="Intel"
> name="productDetailList:0:productDetailField"/></td>
> </tr>
> <tr valign="top">
>    <td><span>Series :</span></td>
>    <td><input type="text" size="50" maxlength="100" value="Core i7"
> name="productDetailList:1:productDetailField"/></td>
> </tr>
> <tr valign="top">
>    <td><span>Core Name :</span></td>
>    <td><input type="text" size="50" maxlength="100" value="Bloomfield"
> name="productDetailList:2:productDetailField"/></td>
> </tr>
> ... etc etc etc ...
>
> Is this good enough? Well, at least this works and simple enough to me...
> Anyone has better solutions?
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to