Каков подход для добавления JavaScript в приложение Tapestry?

Я начинаю с существующего веб-приложения, созданного с помощью Tapestry.

Я не могу понять, где разместить нужный мне Javascript.

В основном это приложение имеет одну страницу, собирающую данные в текстовую область, и я хочу включить библиотеку javascript, чтобы сделать что-то с этой текстовой областью.

Каков подход к добавлению JavaScript в приложение Tapestry? Любой образец или ссылка будет высоко ценится.

Чау! :)

7
задан OscarRyz 19 August 2010 в 22:15
поделиться

1 ответ

Чтобы добавить к компоненту некоторое поведение на стороне клиента, вы обычно создаете класс миксина компонентов в пакете миксинов вашего приложения:

package my.tapestry.basepackage.mixins;

public class TextAreaResizer {

}

В шаблоне компонента вы добавьте миксин в текстовую область следующим образом:

<textarea t:type="TextArea" t:value="..." t:mixins="TextAreaResizer" />

Чтобы загрузить библиотеку JS на страницу, вы можете использовать аннотацию @IncludeJavaScriptLibrary в своем миксине, например:

@IncludeJavaScriptLibrary("context:textarearesizer/js/textarearesizer.js")
public class TextAreaResizer {

}

Если вам нужно запустить некоторый код инициализации, который выполняется через службу RenderSupport , например:

@IncludeStylesheet("context:textarearesizer/css/textarearesizer.css")
@IncludeJavaScriptLibrary("context:textarearesizer/js/textarearesizer.js")
public class TextAreaResizer {

    @Inject
    private RenderSupport renderSupport;

    @InjectContainer
    private TextArea textArea;

    @AfterRender
    void addScript() {
        this.renderSupport.addScript(
             "new TextAreaResizer('%s');", this.textArea.getClientId());
    }

}

В этом случае я также внедрил компонент текстового поля в класс миксина, потому что мне нужен его идентификатор клиента.

Также ознакомьтесь с разделом AJAX и Javascript в документации T5 .

4
ответ дан 7 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: