如果我在<intbox>
中输入“0000000”,则某些默认验证器会显示错误工具提示“您必须指定一个整数,而不是0000000”。我想完全摆脱那条消息,只需将输入值更改为“0”。任何帮助都会很棒......
答案 0 :(得分:1)
您可以覆盖自定义子类org.zkoss.zul.Intbox#coerceFromString
中的IntboxCustomSubclass
(此示例中使用的名称),然后将其作为自定义组件添加到应用程序中的lang.xml
。有关自定义组件,请参阅http://books.zkoss.org/wiki/ZK_Client-side_Reference/Language_Definition。
<component>
<component-name>intbox</component-name>
<component-class>org.zkoss.zul.IntboxCustomSubclass</component-class>
<widget-class>zul.inp.Intbox</widget-class>
<mold>
<mold-name>default</mold-name>
<mold-uri>mold/input.js</mold-uri>
<css-uri>css/input.css.dsp</css-uri>
</mold>
<mold>
<mold-name>rounded</mold-name>
<mold-uri>mold/input.js</mold-uri>
<css-uri>css/input.css.dsp</css-uri>
</mold>
</component>
在这里测试一个字符串,其值为'0000000'并返回0:
// here.
try {
int v = Integer.parseInt(val);
int divscale = vals[1] != null ? ((Integer)vals[1]).intValue(): 0;
while (v != 0 && --divscale >= 0)
v /= 10;
return new Integer(v);
} catch (NumberFormatException ex) {
throw showCustomError(
new WrongValueException(this, MZul.NUMBER_REQUIRED, value));
}
答案 1 :(得分:0)
我通过覆盖小部件默认showError_
方法找到了一个解决方案,这就是创建错误消息的地方......它现在看起来像
zk.$package("foo").MyIntbox = zk.$extends(zul.inp.Intbox, {
$init: function() {
this.$super('$init', arguments);
// some custom logic
},
showError_ : function(msg){
console.log(msg);
}
});