2010-08-19 77 views
6

我從一個使用Tapestry構建的現有webapp開始。將JavaScript添加到Tapestry應用程序的方法是什麼?

我不知道在哪裏把我需要的Javascript。

基本上這個應用程序有一個頁面捕獲數據到一個文本區域,我想包括一個JavaScript庫來處理該文本區域。

什麼是將JavaScript添加到Tapestry應用程序的方法?任何樣品或鏈接將不勝感激。

Chau! :)

回答

4

爲了一些客戶端行爲添加到一個組件,通常你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