Search code examples
apache-poixpageslotus-noteslotus-domino

XPages - using POI 4 XPages and it errors on $ symbol exporting to Word/PDF


I am using the splendid POI4Xpages add-on for my Xpage. It does very well mapping the web page to the Word or PDF, but I have noticed it bombs when there is a dollar sign ($) within any of the fields on the Xpage/Notes document.

Right now, my workaround for users is to substitute USD in place of the $ symbol, but my users and I would like it to handle the $.

I enclosed the error dump below.

Suggestions for where to begin (and end) are much appreciated. Thank you in advance.

POI 4 XPages -> ERROR
--------------------------------------------------------------
Error    : Error during Documentgeneration
POI LIB  : 1.2.6.201312211419
StackTrace:
java.lang.IllegalArgumentException: Illegal group reference
    at java.util.regex.Matcher.appendReplacement(Matcher.java:724)
    at java.util.regex.Matcher.replaceAll(Matcher.java:824)
    at java.lang.String.replaceAll(String.java:1591)
    at         biz.webgate.dominoext.poi.component.kernel.DocumentProcessor.processBookmarks2Run(DocumentProcessor.java:129)
    at     biz.webgate.dominoext.poi.component.kernel.DocumentProcessor.processBookmarks    2Paragraph(DocumentProcessor.java:118)
    at     biz.webgate.dominoext.poi.component.kernel.DocumentProcessor.processBookmarks    2Table(DocumentProcessor.java:110)
    at     biz.webgate.dominoext.poi.component.kernel.DocumentProcessor.processBookmarks    2Document(DocumentProcessor.java:84)
    at     biz.webgate.dominoext.poi.component.kernel.DocumentProcessor.processDocument(    DocumentProcessor.java:193)
at     biz.webgate.dominoext.poi.component.kernel.DocumentProcessor.generateNewFile(    DocumentProcessor.java:143)
    at     biz.webgate.dominoext.poi.component.containers.UIDocument.processAjaxRequest(    UIDocument.java:208)
    at     biz.webgate.dominoext.poi.component.actions.DocumentGenerationServerAction.in    voke(DocumentGenerationServerAction.java:48)
    at     com.ibm.xsp.application.ActionListenerImpl.processAction(ActionListenerImpl.j    ava:60)
    at javax.faces.component.UICommand.broadcast(UICommand.java:324)
    at     com.ibm.xsp.component.UIEventHandler.broadcast(UIEventHandler.java:366)
    at     com.ibm.xsp.component.UIDataPanelBase.broadcast(UIDataPanelBase.java:400)
    at     com.ibm.xsp.extlib.component.layout.UIVarPublisherBase.broadcast(UIVarPublish    erBase.java:185)
    at         com.ibm.xsp.component.UIViewRootEx.broadcast(UIViewRootEx.java:1535)
    at         javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:307)
    at     javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:428)
    at     com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase    .java:94)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
    at     com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:2    56)
    at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228)
    at     com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
    at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
    at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
    at     com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103    )
    at     com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(Compone    ntModule.java:576)
    at     com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentMo    dule.java:1335)
    at     com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invoke    Servlet(ComponentModule.java:853)
    at     com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doServ    ice(ComponentModule.java:796)
    at     com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentMo    dule.java:565)
    at     com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule    .java:1319)
    at     com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:66    2)
    at     com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
    at     com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironme    nt.java:357)
    at     com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment    .java:313)
    at     com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.jav    a:272)

Solution

  • Christian Güdemann posted a new build that addressed the $ character in the middle of a text field issue.

    http://www.webgate.biz/ftp/openntf/POI4XPages/snapshot/biz.webgate.dominoext.poi-1.3.0-SNAPSHOT.zip

    Btw there is a mailinglist in place to be informed about development builds: http://mm.wgcdev.ch/mailman/listinfo

    Thank you for your help, Dwain and Christian!