title: Error with JSF a4j + tomahawk + myfaces: Resources framework is not initialised, check web.xml for Filter configuration
body: <p>I am trying to use <code>&lt;a4j:commandLink&gt;</code> in my JSP and I get the following error that I don't understand at all:</p>
  
  <pre>
  Exception while calling encodeBegin on component : { Component-Path :
    [Class: org.ajax4jsf.framework.ajax.AjaxViewRoot,ViewId: /pages/clienteAM.jsp]
    [Class: javax.faces.component.html.HtmlForm,Id: clientesForm]
    [Class: javax.faces.component.html.HtmlDataTable,Id: cityList]
    [Class: javax.faces.component.UIColumn,Id: j_id88]
    [Class: javax.faces.component.html.HtmlDataTable,Id: telefonos]
    [Class: javax.faces.component.UIColumn,Id: j_id89]
    [Class: org.ajax4jsf.ajax.html.HtmlAjaxCommandLink,Id: j_id91]
  }
  
  Caused by: javax.faces.FacesException: 
  Resources framework is not initialised, check web.xml for Filter configuration
  </pre>
  
  <p>My <code>web.xml</code> look like this:</p>
  
  <pre><code>&lt;?xml version="1.0"?&gt;
  &lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
      version="2.4"&gt;
  
      &lt;description&gt;MyProject web.xml&lt;/description&gt;
  
      &lt;context-param&gt;
          &lt;param-name&gt;org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL&lt;/param-name&gt;
          &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;!-- Configure tomahawk taglib --&gt;
      &lt;context-param&gt;
          &lt;param-name&gt;facelets.LIBRARIES&lt;/param-name&gt;
          &lt;param-value&gt;/WEB-INF/tomahawk.taglib.xml&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;!-- Use Documents Saved as *.xhtml --&gt;
      &lt;context-param&gt;
          &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
          &lt;param-value&gt;.jsp&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;!-- Special Debug Output for Development --&gt;
      &lt;context-param&gt;
          &lt;param-name&gt;facelets.DEVELOPMENT&lt;/param-name&gt;
          &lt;param-value&gt;false&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;param-name&gt;facelets.BUILD_BEFORE_RESTORE&lt;/param-name&gt;
          &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
          &lt;param-value&gt;server&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;param-name&gt;org.apache.myfaces.SERIALIZE_STATE_IN_SESSION&lt;/param-name&gt;
          &lt;param-value&gt;false&lt;/param-value&gt;
      &lt;/context-param&gt;
      &lt;context-param&gt;
          &lt;param-name&gt;org.apache.myfaces.COMPRESS_STATE_IN_SESSION&lt;/param-name&gt;
          &lt;param-value&gt;false&lt;/param-value&gt;
      &lt;/context-param&gt;
      &lt;context-param&gt;
          &lt;param-name&gt;org.apache.myfaces.ALLOW_JAVASCRIPT&lt;/param-name&gt;
          &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/context-param&gt;
      &lt;context-param&gt;
          &lt;param-name&gt;org.apache.myfaces.DETECT_JAVASCRIPT&lt;/param-name&gt;
          &lt;param-value&gt;false&lt;/param-value&gt;
      &lt;/context-param&gt;
      &lt;context-param&gt;
          &lt;param-name&gt;org.apache.myfaces.PRETTY_HTML&lt;/param-name&gt;
          &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;description&gt;
              Validate managed beans, navigation rules and ensure that
              forms are not nested.
          &lt;/description&gt;
          &lt;param-name&gt;org.apache.myfaces.VALIDATE&lt;/param-name&gt;
          &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;description&gt;
              Treat readonly same as if disabled attribute was set for
              select elements.
          &lt;/description&gt;
          &lt;param-name&gt;org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS&lt;/param-name&gt;
          &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;param-name&gt;org.apache.myfaces.ADD_RESOURCE_CLASS&lt;/param-name&gt;
          &lt;param-value&gt;org.apache.myfaces.component.html.util.StreamingAddResource&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;description&gt;
              Virtual path in the URL which triggers loading of resources
              for the MyFaces extended components in the ExtensionFilter.
          &lt;/description&gt;
          &lt;param-name&gt;org.apache.myfaces.RESOURCE_VIRTUAL_PATH&lt;/param-name&gt;
          &lt;param-value&gt;/faces/myFacesExtensionResource&lt;/param-value&gt;
      &lt;/context-param&gt;
  
      &lt;context-param&gt;
          &lt;description&gt;
              Check if the extensions-filter has been properly configured.
          &lt;/description&gt;
          &lt;param-name&gt;org.apache.myfaces.CHECK_EXTENSIONS_FILTER&lt;/param-name&gt;
          &lt;param-value&gt;true&lt;/param-value&gt;
      &lt;/context-param&gt;
  
  
      &lt;!-- Extensions Filter --&gt;
      &lt;filter&gt;
          &lt;filter-name&gt;extensionsFilter&lt;/filter-name&gt;
          &lt;filter-class&gt;org.apache.myfaces.webapp.filter.ExtensionsFilter&lt;/filter-class&gt;
          &lt;init-param&gt;
              &lt;description&gt;
                  Set the size limit for uploaded files. Format: 10 - 10
                  bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB
              &lt;/description&gt;
              &lt;param-name&gt;uploadMaxFileSize&lt;/param-name&gt;
              &lt;param-value&gt;100m&lt;/param-value&gt;
          &lt;/init-param&gt;
          &lt;init-param&gt;
              &lt;description&gt;
                  Set the threshold size - files below this limit are
                  stored in memory, files above this limit are stored on
                  disk.
  
                  Format: 10 - 10 bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB
              &lt;/description&gt;
              &lt;param-name&gt;uploadThresholdSize&lt;/param-name&gt;
              &lt;param-value&gt;100k&lt;/param-value&gt;
          &lt;/init-param&gt;
      &lt;/filter&gt;
      &lt;filter&gt;
        &lt;display-name&gt;Ajax4jsf Filter&lt;/display-name&gt;
        &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt;
        &lt;filter-class&gt;org.ajax4jsf.Filter&lt;/filter-class&gt;
        &lt;init-param&gt;
         &lt;param-name&gt;forceparser&lt;/param-name&gt;
         &lt;param-value&gt;false&lt;/param-value&gt;
        &lt;/init-param&gt;
      &lt;/filter&gt;
      &lt;filter-mapping&gt;
        &lt;filter-name&gt;ajax4jsf&lt;/filter-name&gt;
        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
        &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
        &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
      &lt;/filter-mapping&gt;
      &lt;filter-mapping&gt;
          &lt;filter-name&gt;extensionsFilter&lt;/filter-name&gt;
          &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
      &lt;/filter-mapping&gt;
      &lt;listener&gt;
          &lt;listener-class&gt;
              org.apache.myfaces.webapp.StartupServletContextListener&lt;/listener-class&gt;
      &lt;/listener&gt;
  
      &lt;!-- Faces Servlet --&gt;
      &lt;servlet&gt;
          &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
          &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
          &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
      &lt;/servlet&gt;
  
      &lt;!-- Faces Servlet Mapping --&gt;
      &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
          &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;
  
      &lt;!-- Welcome files --&gt;
      &lt;welcome-file-list&gt;
          &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
      &lt;/welcome-file-list&gt;
  
      &lt;session-config&gt;
          &lt;session-timeout&gt;30&lt;/session-timeout&gt;
      &lt;/session-config&gt;
      &lt;error-page&gt;
          &lt;exception-type&gt;java.lang.Throwable&lt;/exception-type&gt;
          &lt;location&gt;/index.jsp&lt;/location&gt;
      &lt;/error-page&gt;
  &lt;/web-app&gt;
  </code></pre>