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.