将JavaScript添加到Tapestry应用程序的方法是什么?
问题描述:
我从一个使用Tapestry构建的现有webapp开始。将JavaScript添加到Tapestry应用程序的方法是什么?
我不知道在哪里把我需要的Javascript。
基本上这个应用程序有一个页面捕获数据到一个文本区域,我想包括一个JavaScript库来处理该文本区域。
什么是将JavaScript添加到Tapestry应用程序的方法?任何样品或链接将不胜感激。
Chau! :)
答
为了一些客户端行为添加到一个组件,通常你mixins
包您的应用程序创建一个component mixin类:
package my.tapestry.basepackage.mixins;
public class TextAreaResizer {
}
在你的组件模板,你的mixin添加到您的文字面积是这样的:
<textarea t:type="TextArea" t:value="..." t:mixins="TextAreaResizer" />
要加载JS库到页面中,您可以使用@IncludeJavaScriptLibrary标注上你的mixin,像这样:
@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());
}
}
在这种情况下,我也注入文本字段组件插入混入类,因为我需要其客户ID。
哇!!我会试试看。感谢你的回答。 (我想知道为什么我没有看到你的答案) – OscarRyz 2010-08-26 07:14:51
我想创建一个小的JS脚本,利用我的组件的java类中的变量(在页面中查找$ string的所有实例并突出显示它们)。我应该使用第一种方法,然后将JavaScript写入例如公共类TextHighlighter?或者我应该把它写入JS文件,包含@IncludeJavaScriptLibrary(“texthighlighter.js”),然后以某种方式将变量从java类传递给JS? – Ila 2013-09-24 13:04:07