У меня точно такая же проблема.
Документация по этому вопросу не ясна.
В настоящее время я воссоздаю некоторые виджеты, расширяя их виджетом, который я хочу скопировать. После этого я реализую LeafValueEditor и HasEditorDelegate для переопределения getValue ().
В getValue () используйте свой валидатор и при необходимости вызовите yourDelegate.recordError ().
Примерно так: маленькое целочисленное поле, которое проверяет, что значение не больше 10.
public class IntegerField extends ValueBox<Integer> implements LeafValueEditor<Integer>, HasEditorDelegate<Integer>
{
private EditorDelegate<Integer> delegate;
public IntegerField()
{
super(Document.get().createTextInputElement(), IntegerRenderer.instance(), IntegerParser.instance());
setStyleName("gwt-TextBox");
}
@Override
public Integer getValue()
{
Integer value = super.getValue();
if (value > 10)
{
delegate.recordError("too big integer !", value, null);
}
return value;
}
@Override
public void setValue(Integer value)
{
super.setValue(value);
}
@Override
public void setDelegate(EditorDelegate<Integer> delegate)
{
this.delegate = delegate;
}
}
Лучший подход - просто добавить пользовательскую проверку к существующим виджетам, а не переопределять их, но я не знаю, как это сделать!