Search code examples
javajsfrichfaces

java.lang.NullPointerException at com.sun.faces.renderkit.RenderKitUtils.getCommandLinkOnClickScript


I have a managed bean declared in session scope. There is a drop down of years and a submit button. The page works fine when I try to run the report for all years except 2011. I get the following error. What causes the error below?

11:53:20,280 ERROR [STDERR] May 2, 2011 11:53:20 AM com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/reports/studentInfo.xhtml]
java.lang.NullPointerException
    at com.sun.faces.renderkit.RenderKitUtils.getCommandLinkOnClickScript(RenderKitUtils.java:934)
    at com.sun.faces.renderkit.html_basic.CommandLinkRenderer.getOnClickScript(CommandLinkRenderer.java:295)
    at com.sun.faces.renderkit.html_basic.CommandLinkRenderer.renderAsActive(CommandLinkRenderer.java:357)
    at com.sun.faces.renderkit.html_basic.CommandLinkRenderer.encodeBegin(CommandLinkRenderer.java:165)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
    at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:280)
    at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:262)
    at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:284)
    at org.richfaces.renderkit.AbstractRowsRenderer.encodeCellChildren(AbstractRowsRenderer.java:285)...
...............

Solution

  • That was an old JSF 1.2 bug which manifested when you put in the <h:commandLink> a <f:param> whose value attribute was null or totally omitted.

    E.g.

    <h:commandLink>
        <f:param name="foo" />
    </h:commandLink>
    

    or

    <h:commandLink>
        <f:param name="foo" value="#{null}" />
    </h:commandLink>
    

    Apart from fixing it as such that it is never null, you can also just upgrade to the latest Mojarra 1.2 build. It's currently already at 1.2_15 and this bug was already fixed somewhere around version 1.2_05 which was released over 5 years ago. Keep yourself and your software up to date.