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

Reply via email to