包括Javascript库到Wicket Panel

时间:2014-07-06 21:09:01

标签: java javascript d3.js wicket

我有两个脚本文件lib_network.js和network.js。我在网络.js中有一个draw()函数,它调用lib_network.js中的另一个函数。两个文件都使用d3.js函数执行某些任务。

我将以下列方式将文件添加到wicket面板

public static final JavaScriptResourceReference NETWORK_JS = new JavaScriptResourceReference(
            SenseAlign.class, "network.js");

    public static final JavaScriptResourceReference NETWORK_CSS = new JavaScriptResourceReference(
            SenseAlign.class, "network.css");

    public NetworkPanel(String id){ 
        super(id);

    }

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

        aResponse.render(JavaScriptReferenceHeaderItem.forReference(D3Reference.D3_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(JqueryReference.jQuery_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(NetworkLibrary.LIB_NETWORK_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(NETWORK_JS));
        aResponse.render(JavaScriptReferenceHeaderItem.forReference(NETWORK_CSS));

        String[] annotatorScript = new String[] { 
                "draw(\"" + getMarkupId() + "\")"};

        aResponse.render(OnDomReadyHeaderItem.forScript(StringUtils.join(annotatorScript, "\n")));
    }

当我尝试将lib_network.js中的函数调用为

时,我收到错误

未捕获的TypeError:undefined不是函数

此外,css文件未正确加载。获取语​​法错误但语法正确,因为我在文件中只添加了两个类。

任何人都可以告诉我包含资源的正确方法。

我试过在cwiki和wicket指南中寻找答案。他们说上面提到的方式,但它仍然不适合我。

1 个答案:

答案 0 :(得分:0)

new JavaScriptResourceReference(SenseAlign.class, "network.css")

您不应将JavaScriptResourceReference用于CSS文件,否则将使用Javascript压缩器进行压缩。改为使用CssResourceReference。