无法验证SmartGWT中的自定义组件

时间:2014-09-03 05:26:20

标签: smartgwt

我无法让我的自定义组件在动态表单中得到验证。我尝试了很多版本,但它没有按预期工作。对于例如标签未显示在BOLD中以指示该字段是强制性的,并且它可以保存表单而不在字段中输入任何内容。只有当用户在字段中输入并删除它时,才会向用户显示该字段为必填项的红色图标。我不知道我缺少什么。请帮忙。代码在下面

enter image description here

telnumber = new CustomTelephoneTextItem();
telnumber.setName("tel");
telnumber.setTitle("Tel");
telnumber.setTitle(nerpweb.clientFactory.getMessages().tel());

下面是我在上面的类

中使用的Custom TextItem
public class CustomTelephoneTextItem extends CanvasItem
{
    textField_value = new CustomIntegerItem();
    textField_value.setShowTitle(false);
    textField_value.setWidth(100);
    textField_value.setRequired(true);

    form.setItems(textField_value, textField_code);
    form.validate();

    setWrapTitle(false);
    this.setCanvas(form);

2 个答案:

答案 0 :(得分:1)

首先,如果你想要项目标题showin bold,你必须调用item的setRequired(true)。

你的代码中的

是telnumber.setRequired(true);

其次,如果要在form.validate()上验证项目,则必须覆盖项目中的validate()函数并在此函数中编写验证代码。

你的代码中的

是在CustomTelephoneTextItem中调用form.validate()validate()函数

答案 1 :(得分:0)

以下是验证自定义组件

的代码

此代码将放在您将实现的自定义组件中

@Override
public Object getValue()
{
    if (validate() && textField_value.getValue() != null)
        return textField_value.getValue();
    return null;
}

@Override
public void setRequired(Boolean required) {     
    super.setRequired(true);
}

@Override
public Boolean validate() {     
    return super.validate();
}


@Override
public void setValidators(Validator... validators) {
    textField_value.setValidators(validators);
}

然后在您将创建自定义组件的类中,您将调用setRequired()方法,就像这样

telnumber.setRequired(true);