代码之家  ›  专栏  ›  技术社区  ›  OscarRyz

向tapestry应用程序添加javascript的方法是什么?

  •  7
  • OscarRyz  · 技术社区  · 14 年前

    我从一个用tapestry构建的现有webapp开始。

    我不知道该把我需要的javascript放在哪里。

    基本上,这个应用程序有一个将数据捕获到文本区域的页面,我希望包含一个javascript库来处理该文本区域。

    向tapestry应用程序添加javascript的方法是什么?任何样品或链接将不胜感激。

    周!:)

    1 回复  |  直到 14 年前
        1
  •  4
  •   Henning    14 年前

    要向组件添加一些客户端行为,通常需要创建 component mixin 班级 mixins 你的应用程序包:

    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());
        }
    
    }
    

    在本例中,我还向mixin类注入了文本字段组件,因为我需要它的客户机id。

    还可以查看 AJAX & Javascript section of the T5 docs 是的。