从不是wicket组件的元素调用wicket

call wicket from the element that is not wicket-component

本文关键字:wicket 元素 调用 组件      更新时间:2023-09-26

我正在使用js-lib转换为富编辑器(带有"bold"、"italic"等选项)。

RichEditor包含UploadImage按钮,我可以更改此按钮的回调:

function startUploadingImage(field_name, url, type, win) {
    //
}

我已经创建了用于选择文件的模式窗口。那么,如何从函数"startUploadingImage"调用wicket呢??

我试过这样的东西:


// Java-script:
function startUploadingImage(field_name, url, type, win) {
    wicketAjaxGet('..?1-1.IBehaviorListener.0-&action=uploadImage');
}

// and Wicket (class extends WebPage):
clickBehavior = new AbstractDefaultAjaxBehavior() {
    @Override
    protected void respond(AjaxRequestTarget target) {
        IRequestParameters requestParameters = getRequestCycle().getRequest().getRequestParameters();
        String action = requestParameters.getParameterValue("action").toString();
        if (action.equals("uploadImage"))
            modal1.show(target);
    }
};
add(clickBehavior);

但这并不奏效。我在三柱门上很笨,所以打得不多。

您需要将AbstractDefaultAjaxBehavior url传递给javascript,以便调用它。我做这件事的一个巧妙方法是在添加AjaxBehavior的组件的html中添加一个新的数据标记。你可以通过重写AbstractDefaultAjaxBeheior的onComponentTag方法来实现这一点。

@Override
protected void onComponentTag(ComponentTag tag) 
{       
    tag.put("callback-url", behavior.getCallbackUrl());     
    super.onComponentTag(tag);
}

现在,在javascript中,您所要做的就是找到回调url标记并获取其值,这将为您提供要调用的url。

wicketAjaxGet($element.attr('callback-url'), function() { }, function() { });