Hello,
I tried vainly to use Shale 1.0.4 with Ajax4JSF. When I put some ajax
component onto my page and try to open it, I receive a NullPointerException:
javax.servlet.ServletException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
de.uni_muenster.easy.web.filters.SecurityFilter.doFilter(SecurityFilter.java:48)
org.apache.shale.application.faces.ShaleApplicationFilter.doFilter(ShaleApplicationFilter.java:267)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
java.lang.NullPointerException
org.ajax4jsf.renderkit.AjaxRendererUtils.buildAjaxFunction(AjaxRendererUtils.java:390)
org.ajax4jsf.renderkit.html.AjaxFormRenderer.doEncodeBegin(AjaxFormRenderer.java:131)
org.ajax4jsf.renderkit.RendererBase.encodeBegin(RendererBase.java:101)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:243)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
de.uni_muenster.easy.web.filters.SecurityFilter.doFilter(SecurityFilter.java:48)
org.apache.shale.application.faces.ShaleApplicationFilter.doFilter(ShaleApplicationFilter.java:267)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
The reason is that Ajax4JSF relies on the fact that either
facesContext.getViewRoot() is an AjaxViewRoot container or that the
ajaxForm's parent (or grand parent and so on) is an AjaxViewRoot. But
using Shale the facesContext.getViewRoot() is an instance of
ShaleViewRoot (the form's parent is that same ShaleViewRoot object).
As this issue is not resolved with the latest 1.1.0 SNAPSHOT I would
like to ask you kindly to give full Ajax4JSF support.
Thank you very much
Dominik