我从使用 Tapestry 构建的现有 web 应用开始。
我不知道在哪里放置我需要的 Javascript。
基本上,这个应用程序有一个将数据捕获到文本区域的页面,我想包含一个 javascript 库来处理该文本区域。
将 javascript 添加到 Tapestry 应用程序的方法是什么?任何样本或链接将不胜感激。
周!:)
我从使用 Tapestry 构建的现有 web 应用开始。
我不知道在哪里放置我需要的 Javascript。
基本上,这个应用程序有一个将数据捕获到文本区域的页面,我想包含一个 javascript 库来处理该文本区域。
将 javascript 添加到 Tapestry 应用程序的方法是什么?任何样本或链接将不胜感激。
周!:)
要将一些客户端行为添加到组件中,您通常会在应用程序的包中创建一个组件混合类:mixins
package my.tapestry.basepackage.mixins;
public class TextAreaResizer {
}
在您的组件模板中,您将 mixin 添加到您的文本区域,如下所示:
<textarea t:type="TextArea" t:value="..." t:mixins="TextAreaResizer" />
要将 JS 库加载到页面中,可以在 mixin 上使用@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());
}
}
在这种情况下,我还将文本字段组件注入到 mixin 类中,因为我需要它的客户端 ID。