Apache Struts 2 Documentation > Home > Guides > Tag Developers Guide > Struts Tags > UI Tags > Themes and Templates > ajax theme |
The ajax theme is experimental. Feedback is appreciated! |
The ajax theme extends the xhtml theme with AJAX features. The theme uses the popular DOJO AJAX/JavaScript toolkit. AJAX features include:
See also: Ajax tags
AJAX (as a technology) uses a browser-side scripting component that varies between browers (and sometimes versions). To hide those differences from the developer, we utilize the dojo toolkit (http://www.dojotoolkit.org). Several browsers are supported by dojo, and any UI's created with the ajax theme should act the same way for supported browsers. The supported browsers are:
The wrapping technique utilized by the ajax theme is much like xhtml theme, but the controlheader.ftl is a wee bit different.
<#--include "/${parameters.templateDir}/xhtml/controlheader-core.ftl" /--> <#if parameters.form?exists && parameters.form.validate?default(false) == true> <#-- can't mutate the data model in freemarker --> <#if parameters.onblur?exists> ${tag.addParameter('onblur', "validate(this);${parameters.onblur}")} <#else> ${tag.addParameter('onblur', "validate(this);")} </#if> </#if> <#include "/${parameters.templateDir}/${themeProperties.parent}/controlheader.ftl" />
The header provides for AJAX Client Side Validation by checking if the validate attribute is set to true. If it is, a validation request is made on each onblur event for a HTML Struts Tags. Some people don't like the onblur behavior; they would rather a more advanced timer (say, 200ms) be kicked off after every keystroke. You can override this template and provide that type of behavior if you would like.
Three ajax_xhtml templates of special interest are head, div, and a.
Especially with the ajax theme, it is important to use the head tag. (See the ajax head template for more information.) Without it, AJAX support may not be set up properly. |
In addition to these templates, be familiar with the ajax event system provided by the framework and Dojo.