2

我正在使用 Grails 渲染插件/服务来创建 PDF。用户可以在浏览器中预览 PDF 数据(然后单击“下载”按钮并获取 PDF)。PDF和浏览器的一些模板可以统一到一个模板中。所以它只包含在主模板中,然后发送到浏览器或渲染服务。

不幸的是,有一个问题:我需要在一些 HTML 标记上具有 ID 属性(例如<tr><td>,它们在发送到浏览器的模板中使用。但是如果模板中的某个 HTML 标记上有一个 ID 属性,则发送到渲染服务,它失败并出现 NullPointerException:

Stacktrace follows:
java.lang.NullPointerException
    at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.startElement(SAX2DOM.java:211)
    at com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:204)
    at com.sun.org.apache.xml.internal.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:277)
    at com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.startElement(ToXMLSAXHandler.java:646)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:636)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:707)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
    at org.xhtmlrenderer.resource.XMLResource$XMLResourceBuilder.createXMLResource(XMLResource.java:189)
    at org.xhtmlrenderer.resource.XMLResource.load(XMLResource.java:75)
    at grails.plugin.rendering.document.XhtmlDocumentService.createDocument(XhtmlDocumentService.groovy:55)
    at grails.plugin.rendering.document.XhtmlDocumentService.createDocument(XhtmlDocumentService.groovy:43)
    at grails.plugin.rendering.document.XhtmlDocumentService.createDocument(XhtmlDocumentService.groovy:38)
    at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:34)
    at grails.plugin.rendering.RenderingService.render(RenderingService.groovy:33)
    at MyController$_closure4$$ENw2Jz9v.doCall(MyController.groovy:129)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)

我尝试调试 SAX2DOM 并发现 ID 元素就是那个导致此异常的元素。以前有人遇到过这个问题吗?非常感谢任何反馈。

4

0 回答 0