Включение библиотеки Javascript в панель Wicket

#java #javascript #d3.js #wicket

#java #javascript #d3.js #wicket

Вопрос:

У меня есть два файла сценариев lib_network.js и network.js. У меня есть функция draw() в network .js, которая вызывает другую функцию в 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 как

Неперехваченная ошибка типа: undefined не является функцией

Также файл css не загружен должным образом. Получаю синтаксическую ошибку, но синтаксис правильный, поскольку я добавил в файл только два класса.

Может ли кто-нибудь подсказать мне правильный способ включения ресурсов.

Я пытался найти ответ в cwiki и руководстве по wicket. Они говорят, что вышеупомянутый способ, но он все еще не работает для меня.

Комментарии:

1. кто бы ни проголосовал против этого, не могли бы вы, пожалуйста, сообщить мне причину

2. Поддержано, поскольку это хороший вопрос

Ответ №1:

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

Не следует использовать ссылку JavaScriptResourceReference для файла CSS, иначе он будет сжат с помощью компрессора Javascript. Вместо этого используйте CssResourceReference.

Комментарии:

1. Спасибо! Я изменил ее на ресурс CSS, и она работает нормально. Но я все еще не могу вызвать функцию.