Hi all!

We are using a RefreshingView to show some panels inside a form. This way we can add elements to a list of objects that will be processed after submit.

The problem is that ajax on the items of the RefreshingView does not refresh after the submit button is hit on the form.


We tried to use a ListView but it seems it cannot report to feedback panels because reuse item strategy that's why we are using a RefreshingView:
    http://wicket.apache.org/guide/guide/repeaters.html

----

RefreshingView<TarjRealType> cardListView = new RefreshingView<TarjRealType>("tarjetas"){

            /**
             *
             */
            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(Item<TarjRealType> item) {
item.add(new CardEntryComponent("card", (IModel<*TarjRealType*>) item.getDefaultModel()));
            }

            @Override
            protected Iterator<IModel<TarjRealType>> getItemModels() {
List<IModel<TarjRealType>> cardModelList = new ArrayList<IModel<TarjRealType>>(); for(TarjRealType card : ((List<TarjRealType>)this.getDefaultModelObject()))
                     cardModelList.add(Model.of(card));
                return cardModelList.iterator();
            }

        };

cardListView.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());



In the CardEntryComponent we have an ajaxLink (a button) that sets the info inside TarjRealType object.

        panNumberField = new TextField<String>("pan", String.class);
        panNumberField.setRequired(true);
        panNumberField.setOutputMarkupId(true);
...

add(new AjaxLink<TarjRealType>("generatePan", (IModel<*TarjRealType*>) CardEntryComponent.this.getDefaultModel()) {
            Random random = new Random();
            public void onClick( AjaxRequestTarget target ){
TarjRealType card = (TarjRealType) this.getDefaultModelObject(); String PAN = String.valueOf(Math.abs(random.nextLong())).substring(0,15);
                String realPAN = PAN + Luhn.generateDigit(PAN);
                card.setPan(realPAN);
                target.add(panNumberField);
            }
        });

It sets a random PAN number inside.

It works nice because panNumberField is required and when I hit submit button on the main form, it says there's nothing in the text field via feedback panel. After I reload the page and hit the generatePan button, it adds via ajax the PAN into the field and when I hit submit again everything works.

The problem is that after submit, the generatePan works but does not refresh the panNumberField so it appears as empty.

Is this a problem of the reuse strategy?

Thank you in advance.

Reply via email to