【问题标题】:xalan validation java.lang.NoSuchMethodException: For extension functionxalan 验证 java.lang.NoSuchMethodException:对于扩展功能
【发布时间】:2012-08-24 05:37:22
【问题描述】:

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

<?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();
}

你能帮帮我吗?

【问题讨论】:

    标签: java validation xslt xalan


    【解决方案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
    

    【讨论】:

    • 我有一个关于同一主题的新问题。我在上面加上。 (在当前问题中)
    猜你喜欢
    • 2011-03-12
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2019-10-23
    • 1970-01-01
    • 2021-07-13
    • 2021-11-06
    相关资源
    最近更新 更多