XSL:无法在对方法的调用中转换参数/返回类型

时间:2018-11-25 14:08:24

标签: java xml pdf xslt xalan

我有XSL文件,我正在尝试通过我的应用程序生成该文件。

代码如下:

TransformerFactory factory = TransformerFactory.newInstance();
Source styleSheetLoc = new ResourceSource(styleSheetLocation);
Templates t = factory.newTemplates(styleSheetLoc);  // <<< throwing the Exception       
return t.newTransformer();

例外是:

ERROR:  'Cannot find external method 'com.am.caretalks.util.XsltUtils.getResourceString' (must be public).'

FATAL ERROR:  'Cannot convert argument/return type in call to method 'com.am.caretalks.util.XsltUtils.getResourceString(node-set, node-set, int)''

javax.xml.transform.TransformerConfigurationException: Cannot convert argument/return type in call to method 'com.am.caretalks.util.XsltUtils.getResourceString(node-set, node-set, int)'

    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:990)

    at com.am.caretalks.sendreport.CreatePDF.buildTransformer(CreatePDF.java:1147)

    at com.am.caretalks.sendreport.CreatePDF.createProviderEngagementPDF(CreatePDF.java:608)

    at com.am.caretalks.sendreport.CreatePDF.createProviderEngagementPDF(CreatePDF.java:586)

    at com.am.caretalks.admin.EngagementReportExportServiceImpl.exportAndUpload(EngagementReportExportServiceImpl.java:131)

    at com.am.caretalks.admin.EngagementReportExportServiceImpl$$FastClassBySpringCGLIB$$38327504.invoke(<generated>)

编辑: 这是XSL文件中的调用函数     公共静态字符串getResourceString(最终字符串messageKey,最终字符串语言环境,最终字符串customerIndex){     。     

}

我在网上搜索,发现了一个解决方案,该解决方案告诉我从XSL文件到Java代码调用函数时仅使用对象(而不是原语),并且由于出现这些错误,所以没有采取任何措施在这里帮助了我。

这里最大的问题是我不了解错误是什么以及如何解决它,根据抛出的异常我该怎么办?

欢迎提出其他解决此问题的建议

1 个答案:

答案 0 :(得分:0)

该错误消息表明您正在向函数传递不合适的参数。似乎方法期望(字符串,字符串,字符串),并且您正在传递(节点集,节点集,整数)。我不太了解Xalan,但是请尝试通过调用number()或string()将提供的参数显式转换为所需的类型。