如果我在 中输入即“0000000” <intbox>
,则某些默认验证器会显示错误工具提示“您必须指定一个整数,而不是 0000000”。我想完全摆脱该消息,只需将输入值更改为“0”。任何帮助都会很棒...
问问题
1442 次
2 回答
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));
}
于 2012-05-16T09:30:02.897 回答
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);
}
});
于 2012-05-18T12:55:27.287 回答