Ajax Anywhere est une librairie open source qui permet de transformer des composants JSF existant en composant compatible AJAX. Ainsi au lieu de rafraichir l’ensemble d’une page lorsque l’utilisateur soumet un formulaire, vous pouvez délimiter des zones dans votre page et enchainer un rafraichissement uniquement de cette zone. L’avantage d’AJAX Anywhere contrairement à d’autres JSF existant, c’est que cette API n’est pas orientée composant mais plutôt « zone ». D’autre part il est possible d’ajouter ou retirer AJAX anywhere facilement car les composants JSF eux-même ne sont pas impactés. Vous pouvez donc ajouter une couche « AJAX » sur votre application JSF existante, et ce, très facilement

Mise en oeuvre:

  • Téléchargez l’api ici
  • Placer le fichier aa.js à la racine de votre répertoire web, les fichiers .class dans le répertoire WEB-INF/lib, le fichier ajaxanywhere.tld dans le répertoire META-INF\tlds.
  • Configurez un nouveau filter:

          <filter>
            <filter-name>AjaxAnywhere</filter-name>
            <filter-class>org.ajaxanywhere.AAFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>AjaxAnywhere</filter-name>
            <url-pattern>*.jsp</url-pattern>
        </filter-mapping>
        <filter-mapping>
            <filter-name>AjaxAnywhere</filter-name>
            <url-pattern>*.do</url-pattern> <!-- default Struts mapping -->
        </filter-mapping>
        <filter-mapping>
            <filter-name>AjaxAnywhere</filter-name>
            <url-pattern>*.htm</url-pattern> <!-- other framewords mapping-->
        </filter-mapping>
    

  • Il faut maintenant brancher AjaxAnywhere sur vos composants JSF dans une page JSP. Vous pouvez voir ici une démo avec les composants MyFaces et l’intérêt de ne pas recharger toute la page. Pour ajouter AjaxAnywhere à une page JSP existante il faut:

    • Importer la librairie de tag
    • Appeler la methode AAUtil.addZones sur l’élement JSF à ajaxiser
    • Importer les librairies JS et définir la FORM qui contient le composant
    • Changer la target action de la balise FORM pour appeler du code JS d’AjaxAnywhere
    • Pre et post fixer votre composant avec le tag JSF <aa:zone>

    Si vous avez déjà une application avec JSF et que vous désirez tester le principe d’AJAX rapidement, alors AjaxAnywhere est pour vous