将JavaScript添加到Tapestry应用程序的方法是什么?

将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。

也检查出AJAX & Javascript section of the T5 docs

+0

哇!!我会试试看。感谢你的回答。 (我想知道为什么我没有看到你的答案) – OscarRyz 2010-08-26 07:14:51

+0

我想创建一个小的JS脚本,利用我的组件的java类中的变量(在页面中查找$ string的所有实例并突出显示它们)。我应该使用第一种方法,然后将JavaScript写入例如公共类TextHighlighter?或者我应该把它写入JS文件,包含@IncludeJavaScriptLibrary(“texthighlighter.js”),然后以某种方式将变量从java类传递给JS? – Ila 2013-09-24 13:04:07