Wicket - 未在Panel中加载JavaScript

时间:2014-07-21 19:45:53

标签: jquery kendo-ui wicket wicket-6

我有一个面板,用于使用Wicket-Jquery-Kendo-ui的富文本编辑器。如果我将面板直接添加到页面加载的页面上,一切正常。但是,如果我动态添加面板,则面板无法加载所需的javascript:

 Wicket.Ajax.Call.processEvaluation: Exception evaluating javascript: TypeError: undefined is not a function, text: (function(){Wicket.Ajax.ajax({"f":"forma8","u":"./page?4-1.IBehaviorListener.0-form-addFieldPanel-form-fieldPanel-form-rte-form-container-button","e":"click","c":"buttona9","sc":"addFieldPanel:form:fieldPanel:form:rte:form:container:button","m":"POST"});})();(function(){jQuery('#editora7').kendoEditor({ "encoded": false });})();

我正在使用一个抽象面板处理这个添加,我扩展并使用replaceWith()方法并将面板添加回目标。这种方法适用于我正在使用的所有其他面板,但RTE的新增Javascript是出现问题的地方。如果我刷新页面,或者我将整个页面添加到目标,那么它将呈现,但这显然不理想,因为我使用AJAX是有原因的。

关于如何正确添加javascript的任何想法都将非常感激。

1 个答案:

答案 0 :(得分:0)

重新评估我的流程后,我找到了解决方案。由于我的项目设置,我在实例化时将所有javascript加载到应用程序中,尽管这些javascript文件只需要此面板。 为了解决这个问题,我从批量加载中删除了javascript,并将以下方法添加到我的面板中:

    @Override
public void renderHead(IHeaderResponse response)
{
    super.renderHead(response);

    response.render(JavaScriptHeaderItem.forUrl("http://cdn.kendostatic.com/2014.1.416/js/kendo.upload.min.js"));
    response.render(JavaScriptHeaderItem.forUrl("http://cdn.kendostatic.com/2014.1.416/js/kendo.imagebrowser.min.js"));
    response.render(JavaScriptHeaderItem.forUrl("http://cdn.kendostatic.com/2014.1.416/js/kendo.editor.min.js"));
}

希望这可能有助于其他人。