Beyond Dojo - Adding other javascript libraries
Starting with Tapestry 4.1.4, it is possible to completely remove dojo from the generated pages, and instead use other javascript libraries. Here are the required steps:
- Create an 'adapter' javascript file that implements Tapestry's required javascript functions using the js library of your choice. A simple adaptor that does nothing (but is quite useful for documentation and for finding what needs to be implemented is at classpath:/tapestry/skeleton/core.js
- Add an implementation for the tapestry.js.JavascriptManager service that includes references to the javascript files (both the libraries and of your adaptor). You'll typically want to set the files property to a comma separated String of file references (such as classpath:/js/prototype.js,classpath:/js/scriptaculous.js) and the tapestryFile to your adapter javascript, other properties can be left empty :
<implementation service-id="tapestry.js.JavascriptManager">
<invoke-factory>
<construct class="org.apache.tapestry.javascript.JavascriptManagerImpl">
<set-service property="assetSource" service-id="tapestry.asset.AssetSource"/>
<set property="files"
value="classpath:/yui/yahoo/yahoo-min.js,classpath:/yui/dom/dom-min.js,classpath:/yui/event/event-min.js"/>
<set property="formFiles" value=""/>
<set property="widgetFiles" value=""/>
<set property="path" value=""/>
<set property="tapestryFile" value="classpath:/yui/yui-tapestry.js"/>
<set property="tapestryPath" value=""/>
</construct>
</invoke-factory>
</implementation>
- Use SimpleAjaxShellDelegate with the @Shell or the @ScriptIncludes components.