【发布时间】:2015-02-13 08:38:24
【问题描述】:
我在将代码传输到 Spring applicationContext.xml 时遇到问题
来源是:
File inFile = new File ("path/to/file/", "fileName.docx")
WordprocessingMLPackage wordMLPackage = Docx4J.load(inFile);
我不工作的解决方案是:
<bean id="inFile" class="java.io.File">
<constructor-arg value="path/to/file/" />
<constructor-arg value="fileName.docx" />
</bean>
<bean id="docx4j" class="org.docx4j.Docx4J" factory-method="load">
<constructor-arg ref="inFile" />
</bean>
<bean id="wordprocessingMLPackage" class="org.docx4j.openpackaging.packages.WordprocessingMLPackage" factory-bean="docx4j" />
我从 bean“wordprocessingMLPackage”中得到的确实是 WordprocessingMLPackage 类的一个实例,但它似乎是空的,尽管我尝试加载的文件不是(是的,路径是双重检查的)。
尝试时
MainDocumentPart mdp = wordprocessingMLPackage.getMainDocumentPart();
List<Object> content = mdp.getContent();
我收到 NullPointerException 因为 mdp 为空!
有没有人有想法……甚至是解决方案?
================================================ ==============
我找到了专门针对我的问题的解决方案。
这里是Docx4j.load()的源码:
public static WordprocessingMLPackage load(File inFile) throws Docx4JException {
return WordprocessingMLPackage.load(inFile);
}
这意味着我可以通过静态自身创建 WordprocessingMLPackage 的实例!
正在运行的代码:
<bean id="wordprocessingMLPackage" class="org.docx4j.openpackaging.packages.WordprocessingMLPackage" factory-method="load">
<constructor-arg ref="baseDocument" />
</bean>
所以我找到了解决原始问题的幸运“解决方法”。
由于这个问题不再紧迫,我仍然对正确的解决方案感兴趣,尤其是在允许将 WordprocessingMLPackage 注入其他 bean 的解决方案中。
谢谢!
【问题讨论】:
标签: spring methods parameters static factory