我有一个 XSLT,我用它来使用 Java 转换 XML。当我在 Eclipse 中运行代码并使用 Apache Tomcat 时,代码工作正常。但是当我将ear文件部署到WebSphere时,该字段显示为空白。有人有想法吗?
Java 变量“reportId”和“proposalId”是在我使用 System.out.println() 时设置的,并且可以看到值已设置。
Java 代码 //使用工厂创建包含 xsl 文件的模板
Templates template = factory.newTemplates(new StreamSource(is));
// Use the template to create a transformer
Transformer xformer = template.newTransformer();
xformer.setParameter("reportId", reportId);
xformer.setParameter("proposalId", proposalId);
<xsl:param name="proposalId"/>
<xsl:param name="reportId"/>
然后,我在 XSLT 中使用以下内容来读取参数:
<td align="left"><b>Proposal Ref: </b> <xsl:value-of select="$proposalId"/>
</td>
<td align="left"><b>Report Id: </b> <xsl:value-of select="$reportId"/>
</td>
最佳答案
我发现我的模板标签中有参数。转换器无法设置模板级变量的值。它只能将其设置在全局级别变量上。所以我的代码是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:param name="proposalId"/>
<xsl:param name="reportId"/>
</xsl:template>
</xsl:stylesheet>
但它应该是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:param name="proposalId"/>
<xsl:param name="reportId"/>
<xsl:template match="/">
</xsl:template>
</xsl:stylesheet>
关于java - Websphere - Transformer.setParameter 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44052731/