Я начинаю с существующего веб-приложения, созданного с помощью Tapestry.
Я не могу понять, где разместить нужный мне Javascript.
В основном это приложение имеет одну страницу, собирающую данные в текстовую область, и я хочу включить библиотеку javascript, чтобы сделать что-то с этой текстовой областью.
Каков подход к добавлению JavaScript в приложение Tapestry? Любой образец или ссылка будет высоко ценится.
Чау! :)
Чтобы добавить к компоненту некоторое поведение на стороне клиента, вы обычно создаете класс миксина компонентов в пакете миксинов
вашего приложения:
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 .