• NullPointerException in Dojo List TextBox

    By Thanh Nguyen 1 decade ago

     

    <p>
        Hello, I think there&#39;s a bug with the Dojo List Textbox. I&#39;m running ExtLib 8.5.3</p>
    <p>
        When we allow multiple selections of Value Picker control, and the current value of the Dojo List Textbox doesn&#39;t exist in the data of the Value Picker, we get NullPointerException as below:</p>
    <p>
        &nbsp;</p>
    <pre id="stacktrace" style="font-family: 'Courier new', Courier, monospace; font-size: 10pt; line-height: 1.2em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); margin-left: 2em; display: block; ">
    

    java.lang.NullPointerException

    com.ibm.xsp.extlib.component.picker.data.SimpleValuePickerData$1.compare(SimpleValuePickerData.java:251)
    com.ibm.commons.util.QuickSort$JavaList.compare(QuickSort.java:306)
    com.ibm.commons.util.QuickSort.qSortHelp(QuickSort.java:75)
    com.ibm.commons.util.QuickSort.sort(QuickSort.java:34)
    com.ibm.xsp.extlib.component.picker.data.SimpleValuePickerData.loadEntries(SimpleValuePickerData.java:255)
    com.ibm.xsp.extlib.renderkit.dojoext.form.DojoExtListTextBoxRenderer.initDojoAttributes(DojoExtListTextBoxRenderer.java:72)
    com.ibm.xsp.extlib.renderkit.dojo.form.DojoFormWidgetRenderer.writeDojoAttributes(DojoFormWidgetRenderer.java:303)
    com.ibm.xsp.extlib.renderkit.dojo.form.DojoFormWidgetRenderer.encodeBegin(DojoFormWidgetRenderer.java:165)
    com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeBegin(ReadOnlyAdapterRenderer.java:146)
    javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:956)
    com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:840)
    com.ibm.xsp.util.FacesUtil.renderChildren(FacesUtil.java:871)
    com.ibm.xsp.renderkit.html_extended.HtmlBasicRenderer.encodeChildren(HtmlBasicRenderer.java:206)
    com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeChildren(ReadOnlyAdapterRenderer.java:162)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:979)
    com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:842)
    com.ibm.xsp.util.FacesUtil.renderChildren(FacesUtil.java:871)
    com.ibm.xsp.renderkit.html_extended.HtmlBasicRenderer.encodeChildren(HtmlBasicRenderer.java:206)
    com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeChildren(ReadOnlyAdapterRenderer.java:162)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:979)
    com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:842)
    com.ibm.xsp.util.FacesUtil.renderChildren(FacesUtil.java:871)
    com.ibm.xsp.renderkit.html_extended.HtmlBasicRenderer.encodeChildren(HtmlBasicRenderer.java:206)
    com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeChildren(ReadOnlyAdapterRenderer.java:162)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:979)
    com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:842)
    com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
    com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
    com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
    com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1317)
    com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1255)
    com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:641)
    com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:320)
    com.ibm.xsp.application.ViewHandlerExImpl.renderView(ViewHandlerExImpl.java:335)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)
    com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:264)
    com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:248)
    com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200)
    com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
    com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137)
    com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1267)
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847)
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1251)
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598)
    com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421)
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
    com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
    com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)</pre>
    <p>
        &nbsp;</p>
    <p>
        I attached the demo database, when you click on &quot;Terry&quot; link, you will get this error</p>
    

  • Attachment

    By Thanh Nguyen 1 decade ago
    • Thanks,fixed in the next build

      By Philippe Riand 1 decade ago

      I fixed the NPE, but have you tried to use a domino view picker instead of a simple value one, using @DbColumn()

      • com.ibm.xsp.FacesExceptionEx: !DominoViewPickerData.Cannotfindlabelcolumn0!

        By Thanh Nguyen 1 decade ago

        Thanks!

         

        I tried the dominoViewValuePicker, but I couldn&#39;t get the labelColumn to work, I get Exception for whatever I put in labelColumn
        

         

        com.ibm.xsp.FacesExceptionEx: !DominoViewPickerData.Cannotfindlabelcolumn0!
            com.ibm.xsp.extlib.component.picker.data.DominoViewPickerData$_EntryMetaData.<init>(DominoViewPickerData.java:163)
            com.ibm.xsp.extlib.component.picker.data.DominoViewPickerData.createEntryMetaData(DominoViewPickerData.java:140)
            com.ibm.xsp.extlib.component.picker.data.AbstractDominoViewPickerData.loadEntries(AbstractDominoViewPickerData.java:221)
            com.ibm.xsp.extlib.renderkit.dojoext.form.DojoExtListTextBoxRenderer.initDojoAttributes(DojoExtListTextBoxRenderer.java:72)
            com.ibm.xsp.extlib.renderkit.dojo.form.DojoFormWidgetRenderer.writeDojoAttributes(DojoFormWidgetRenderer.java:303)
            com.ibm.xsp.extlib.renderkit.dojo.form.DojoFormWidgetRenderer.encodeBegin(DojoFormWidgetRenderer.java:165)
            com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeBegin(ReadOnlyAdapterRenderer.java:146)
            javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:956)
            com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:840)
            com.ibm.xsp.util.FacesUtil.renderChildren(FacesUtil.java:871)
            com.ibm.xsp.renderkit.html_extended.HtmlBasicRenderer.encodeChildren(HtmlBasicRenderer.java:206)
            com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeChildren(ReadOnlyAdapterRenderer.java:162)
            javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:979)
            com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:842)
            com.ibm.xsp.util.FacesUtil.renderChildren(FacesUtil.java:871)
            com.ibm.xsp.renderkit.html_extended.HtmlBasicRenderer.encodeChildren(HtmlBasicRenderer.java:206)
            com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeChildren(ReadOnlyAdapterRenderer.java:162)
            javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:979)
            com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:842)
            com.ibm.xsp.util.FacesUtil.renderChildren(FacesUtil.java:871)
            com.ibm.xsp.renderkit.html_extended.HtmlBasicRenderer.encodeChildren(HtmlBasicRenderer.java:206)
            com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeChildren(ReadOnlyAdapterRenderer.java:162)
            javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:979)
            com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:842)
            com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
            com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
            com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
            com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1317)
            com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1255)
            com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:641)
            com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:320)
            com.ibm.xsp.application.ViewHandlerExImpl.renderView(ViewHandlerExImpl.java:335)
            com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103)
            com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
            com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)
            com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:264)
            com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:248)
            com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200)
            com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
            com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137)
            com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
            com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
            com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1267)
            com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847)
            com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
            com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
            com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1251)
            com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598)
            com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421)
            com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
            com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
            com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)

         

        • Ok,I provided a fix but...

          By Philippe Riand 1 decade ago

          The fix is because only the programmatic name of the column was used, not its title. Moreover, the search was case sensitive. So I made similar to the view datasource binding and it will be in the next build.

          Now, can you try to use the programmatic name of the column, using the exact case? That should solve your problem.

          • Thanks

            By Thanh Nguyen 1 decade ago

            Will wait for the next build :)

            BR,