我无法让我的自定义组件在动态表单中得到验证。我尝试了很多版本,但它没有按预期工作。对于例如标签未显示在BOLD中以指示该字段是强制性的,并且它可以保存表单而不在字段中输入任何内容。只有当用户在字段中输入并删除它时,才会向用户显示该字段为必填项的红色图标。我不知道我缺少什么。请帮忙。代码在下面
telnumber = new CustomTelephoneTextItem();
telnumber.setName("tel");
telnumber.setTitle("Tel");
telnumber.setTitle(nerpweb.clientFactory.getMessages().tel());
下面是我在上面的类
中使用的Custom TextItempublic 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);
答案 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);