2012-08-24 46 views
0

我嘗試驗證我的頁面中的數據。xalan驗證java.lang.NoSuchMethodException:對於擴展函數

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

你能幫助我嗎?

回答

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 
+0

我對同一主題有一個新問題。我在上面添加它。 (在當前的問題中) – Ray