我尝试在页面中验证数据。
<?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();
}
你能帮助我吗?
答案 0 :(得分: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