0

我尝试验证页面中的数据。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:item="http://www.myspace.com/item"
    xmlns:shop="xalan://my.app.xslt.model.Shop" xmlns:valid="xalan://my.app.xslt.validation.ShopValidator"
    xmlns:exsl="http://exslt.org/common">

我有一个带有字段的模型,以及带有检查每个字段的方法的类验证器。

并排成一排

<xsl:if test="valid:isNotEmptyData(shop:getOwner($item)) != true()">
            <error message="The field OWNER is empty." />
        </xsl:if>

我得到 NoSuchMethodExtension 虽然我有模型

public class Shop{
  private String owner;
  public String getOwner(){
    return owner;
  }
}

在验证器类中

public static boolean isNotEmptyData(String model){
  retutn model.isEmpty();
}

你能帮助我吗?

4

1 回答 1

1

您的方法Shop.getOwner()没有参数,而在 XSLT 中您调用它时就像shop:getOwner($item))使用一个参数一样 - XSLT 处理器查找具有一个参数的方法但找不到它,因此会出现错误。

我不确定getOwner()应该做什么 - 可能从它的论点中提取一些价值..?在这种情况下,您应该修改它以接受参数并处理它。

顺便一提,

valid:isNotEmptyData(shop:getOwner($item)) != true()

可以使用标准 XPath 函数编写为

 not(string(shop:getOwner($item)))

(如果字符串非空,则认为字符串为真),或者

string-length(shop:getOwner($item)) = 0
于 2012-08-25T18:00:49.310 回答