Hi all,
I have a ConfirmAjaxFallbackLink which is use to display confirmation
dialog, when a user attempts to delete an item in a datatable.
public abstract class ConfirmAjaxFallbackLink extends AjaxFallbackLink
{
private String confirmMessage;
private IModel<String> confirmMessageModel;
public ConfirmAjaxFallbackLink(String id, String confirmMessage)
{
super(id);
this.confirmMessage = confirmMessage;
}
public ConfirmAjaxFallbackLink(String id, IModel<String> messageModel)
{
super(id, messageModel);
this.confirmMessageModel = messageModel;
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
super.updateAjaxAttributes(attributes);
AjaxCallListener ajaxCallListener = new AjaxCallListener();
if (confirmMessage != null) {
ajaxCallListener.onPrecondition(new
JavaScriptEventConfirmation(confirmMessage).getBeforeHandler(this));
} else {
ajaxCallListener.onPrecondition(new
JavaScriptEventConfirmation(confirmMessageModel.getObject()).getBeforeHandler(this));
}
attributes.getAjaxCallListeners().add(ajaxCallListener);
}
@Override
public abstract void onClick(AjaxRequestTarget target);
}
it works fine with static message and static model
but i want to load the message dynamically. so i use LoadableDetachableModel
like this
new ConfirmAjaxFallbackLink("deleteItemLink", new
LoadableDetachableModel<String>()
{
@Override
protected String load()
{
List<String> activeUsages =
findActiveUsages();
if (activeUsages.size() > 0) {
return "This item is actively used in "
+activeUsages +", Do you still want to delete it?";
}
return "Do you want delete?"
}
})
{
@Override
public void onClick(AjaxRequestTarget target)
{
onDelete(target);
}
};
But it doesn't load dynamically. while we refresh the page only it loading.
can you have any idea about it.
Thanks,
Vignesh