0
votes

I am running an Xpages db in XPiNC that I want to use as a "front end" to several other databases in our system. I will store the code in this DB and access the data in other DBs.

When I am trying to do a simple CRUD operation on a form I am getting an error that I cannot explain.

6/22/15 4:51 PM: Exception Thrown
Context Path: /xsp/<SERVER>NetworkHome.nsf
Page Name: /xpFormHelpDesk.xsp
javax.faces.FacesException
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(Unknown Source)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
    at com.ibm.xsp.controller.FacesControllerImpl.execute(Unknown Source)
    at com.ibm.xsp.webapp.FacesServlet.serviceView(Unknown Source)
    at com.ibm.xsp.webapp.FacesServletEx.serviceView(Unknown Source)
    at com.ibm.xsp.webapp.FacesServlet.service(Unknown Source)
    at com.ibm.xsp.webapp.FacesServletEx.service(Unknown Source)
    at com.ibm.xsp.webapp.DesignerFacesServlet.service(Unknown Source)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(Unknown Source)
    at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(Unknown Source)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(Unknown Source)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(Unknown Source)
    at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(Unknown Source)
    at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(Unknown Source)
    at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(Unknown Source)
    at com.ibm.domino.xsp.module.nsf.NSFService.access$0(Unknown Source)
    at com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)
    at com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
    at com.ibm.xsp.renderkit.dojo.DateTimeHelperRenderer._getConvertedValue(Unknown Source)
    at com.ibm.xsp.renderkit.dojo.DateTimeHelperRenderer.getConvertedValue(Unknown Source)
    at com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.getConvertedValue(Unknown Source)
    at javax.faces.component.UIInput.getConvertedValue(Unknown Source)
    at com.ibm.xsp.component.UIInputEx.getConvertedValue(Unknown Source)
    at javax.faces.component.UIInput.validate(Unknown Source)
    at javax.faces.component.UIInput.executeValidate(Unknown Source)
    at javax.faces.component.UIInput.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at com.ibm.xsp.component.UIDataPanelBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at com.ibm.xsp.component.UIDataPanelBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at com.ibm.xsp.component.UIDataPanelBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at com.ibm.xsp.component.UIDataPanelBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at com.ibm.xsp.extlib.component.layout.UIVarPublisherBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at com.ibm.xsp.component.UIDataPanelBase.processValidators(Unknown Source)
    at javax.faces.component.UIForm.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIComponentBase.processValidators(Unknown Source)
    at javax.faces.component.UIViewRoot.processValidators(Unknown Source)
    at com.ibm.xsp.component.UIViewRootEx._processValidators(Unknown Source)
    at com.ibm.xsp.component.UIViewRootEx.processValidators(Unknown Source)
    ... 25 more

My code in the custom control is as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex"
    xmlns:xc="http://www.ibm.com/xsp/custom">
    <xp:this.data>
        <xp:dominoView
            var="view1"
            databaseName="helpdesk.nsf"
            viewName="My Tickets">
            <xp:this.categoryFilter><![CDATA[#{javascript:@Name("[CN]",session.getEffectiveUserName()) + "Open"}]]></xp:this.categoryFilter>
        </xp:dominoView>
    </xp:this.data>
    <xe:widgetContainer
        id="widgetContainer1"
        style="width:800.px;font-weight:bold;font-size:10pt;margin-left:10.0px"
        dropDownRendered="false"
        titleBarText="My Help Desk Tickets"
        titleBar="true"
        type="sidebar"
        collapsible="false">
        <xp:panel>
            <xp:repeat
                id="repeat1"
                var="rowData"
                indexVar="repeatIndex"
                value="#{view1}">
                <xp:this.facets>
                    <xp:text
                        disableTheme="true"
                        xp:key="header"
                        escape="false">
                        <xp:this.value><![CDATA[<table class='lotusTable repeatRowColors' border='0' cellspacing='0' cellpadding='0'>
<tr class ='lotusFirst lotusSort scope='col'>
<th class ='lotusBold'>Requester</th>
<th class ='lotusBold'>Subject</th>
<th class ='lotusBold'>Date</th>
</tr>
</thead>]]></xp:this.value>
                    </xp:text>
                    <xp:text
                        disableTheme="true"
                        xp:key="footer"
                        escape="false">
                        <xp:this.value><![CDATA[</table>]]></xp:this.value>
                    </xp:text>
                </xp:this.facets>
                <xp:tr
                    id="rowDataContainer">
                    <xp:td
                        style="width:125.00px;min-width:125px;max-width:125px;font-size:10pt">
                        <xp:text
                            escape="true"
                            id="computedField3">
                            <xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("$0");}]]>
                            </xp:this.value>
                        </xp:text>
                    </xp:td>
                    <xp:td
                        style="width:250px;min-width:250px;max-width:250px font-size:10pt">
                        <xp:link
                            escape="true"
                            id="link1">
                            <xp:this.text><![CDATA[#{javascript:rowData.getColumnValue("Subject2")}]]></xp:this.text>
                            <xp:eventHandler
                                event="onclick"
                                submit="true"
                                refreshMode="complete">
                                <xp:this.action>
                                    <xp:openPage
                                        name="/xpFormHelpDesk.xsp"
                                        target="openDocument">
                                        <xp:this.documentId><![CDATA[#{javascript:rowData.getDocument().getUniversalID()}]]></xp:this.documentId>
                                    </xp:openPage>
                                </xp:this.action>
                            </xp:eventHandler>
                        </xp:link>
                    </xp:td>
                    <xp:td
                        style="font-size:10pt">
                        <xp:text
                            escape="true"
                            id="computedField2">
                            <xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("$1");}]]>
                            </xp:this.value>
                            <xp:this.converter>
                                <xp:convertDateTime
                                    type="date"></xp:convertDateTime>
                            </xp:this.converter>
                        </xp:text>
                    </xp:td>
                </xp:tr>
            </xp:repeat>
        </xp:panel>
    </xe:widgetContainer>
</xp:view>

The database that I am getting the data from is not in Xpages, but I don't think that that should matter.

2
Is the data database local? Otherwise it will need format ServerName!!DatabasePathPaul Stephen Withers

2 Answers

1
votes

Looking at the stack trace, it's failing in Process Validations phase - so checking datatypes for validation / data conversion, and failing on the DateTimeHelperRenderer. It looks like that's pointing to computedField2.

There are two possible explanations:

  1. One of the view entries has a value in column $1 that cannot be converted to a date. This sounds the most probable.
  2. You're hitting the problem I blogged about with partial refreshes and row datasources not available http://www.intec.co.uk/dataviews-and-nested-repeats/. If this is the case, wrapping the calculation with if (view.isRenderingPhase()) {...} will solve the problem. If it's not the case, it will move the error to the Render Response phase.
2
votes

Your datasource defines databaseName="helpdesk.nsf" - in XPiNC it means local replica of the database. You need to use full format, as Paul suggested:

databaseName="yourservername!!helpdesk.nsf"

I recommend to parametrize the server with:

databaseName="#{database.server}!!helpdesk.nsf"

I think validator fails because of "no data" from invalid data source.