从ZKOSS中的intbox中删除默认验证消息

时间:2012-05-15 07:23:23

标签: validation input zk

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

2 个答案:

答案 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);
    }
});