我的 xsl 文件
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:good="xalan://com.epam.laba.model.Good"
xmlns:validator="xalan://com.epam.laba.validator.ValidatorXslGood">
<xsl:include href="parameter.xsl"/>
<xsl:param name="validator"/>
<xsl:param name="good"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/|node()|@*">
<xsl:if test="validator:validateGood($good)">
<xsl:copy>
<xsl:apply-templates
select="node()|@*" />
</xsl:copy>
</xsl:if>
</xsl:template>
……
创建验证器并设置为 xsl 的 Java 代码
Good good=fillGood(parameters);
ValidatorXslGood validatorXslGood=new ValidatorXslGood();
Source sourceXSL = new StreamSource(xsltFile);
Transformer transformer = factory.newTransformer(sourceXSL);
transformer.setParameter(SUBCATEGORY_ID_VALUE, subcategoryId);
transformer.setParameter(GOOD, good);
transformer.setParameter(VALIDATOR, validatorXslGood);
transformer.transform(xmlSource, new StreamResult(outWriter));
但
非静态 Java 函数“validateGood”的第一个参数不是有效的对象引用。无法将数据类型“void”转换为“boolean”。
你能解释一下有什么问题吗?
升级版:
ValidatorXslGood.java 代码:
public class ValidatorXslGood {
private Good good;
private Map<String, String> setErrors;
private ResourceBundleManager errorManager;
public ValidatorXslGood() {
errorManager = new ResourceBundleManager();
errorManager.setResourceBundle(RESOURCE_BUNDLE__FOR_ERROR_FILE);
}
public Good getGood() {
return good;
}
public void setGood(Good good) {
this.good = good;
}
public boolean validateGood(Good good) {
if (checkingName(good.getName())) {
return true;
} else {
return false;
}
}
我尝试在 XSL 中创建验证器
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:good="xalan://com.epam.laba.model.Good"
xmlns:validator="xalan://com.epam.laba.validator.ValidatorXslGood"
extension-element-prefixes="validator" >
<xsl:include href="parameter.xsl"/>
<xsl:variable name="validatorConstructor" select="validator:new()"/>
<xsl:param name="validator"/>
<xsl:param name="good"/>
...........
但我有新错误,我无法理解路径中的错误
找不到类“com.epam.laba.validator.ValidatorXslGood”。找不到外部构造函数“com.epam.laba.validator.ValidatorXslGood”。