1

如果我在 中输入即“0000000” <intbox>,则某些默认验证器会显示错误工具提示“您必须指定一个整数,而不是 0000000”。我想完全摆脱该消息,只需将输入值更改为“0”。任何帮助都会很棒...

4

2 回答 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 回答