我正在使用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元素是一个,导致此异常。以前有人遇到过这个问题吗?非常感谢任何反馈。