我正在定制GWT 2.5.1的DateBox。
我的要求是:我不能允许日期超过31/12/9999,我需要严格的日期解析,始终(也就是说,我只需要允许DD/MM/YYYY格式的日期,这是我的MyDatePickerFormat格式),我需要检索解析错误并将错误传播到编辑器框架(并将其显示在实现HasEditorErrors的自定义Widget的某个地方)。
这是我为此目的创建的类的列表:
1. MyDateBox extends DateBox implements ParseEvent.HasParseEventHandlers.
2. MyDatePickerFormat implements Format
3. MyDateBoxEditorDecorator extends Composite implements HasEditorErrors<Date>, HasEnabled, HasValue<Date>,
IsEditor<LeafValueEditor<Date>>, HasEditorDelegate<Date>详细情况:
1.
public MyDateBox()
{
super();
this.getTextBox().setMaxLength(MyDateBox.MyDatePickerFormat.MAX_DATE_LENGTH);
final MyDatePickerFormat myPickerFormat = new MyDateBox.MyDatePickerFormat();
setFormat(myPickerFormat);
ParseEventHandler handler = new ParseEventHandler()
{
@Override
public void onParseEvent(ParseEvent event)
{
MyDateBox.this.fireEvent(event);
}
};
myPickerFormat.setParseEventHandler(handler);
}3.
public MyDateBoxEditorDecorator()
{
dateBox = new MyDateBox();
dateBox.addParseErrorHandler(new ParseEventHandler()
{
@Override
public void onParseEvent(ParseEvent event)
{
MyDateBoxEditorDecorator.this.onParseEvent(event);
}
});
initWidget(Binder.BINDER.createAndBindUi(this));
contents.add(dateBox);
}我的问题如下:
谢谢。
PS。我不太了解这样的格式,已经尽了我最大的努力(它看起来很难看,但可读性很强)。
发布于 2017-02-20 12:21:15
只是提醒一下:我已经解决了最大的问题(我的编辑器层次结构问题与错误处理)。原因是我在单个编辑器周期中多次调用getValue() (例如,每次用户修改字段时),这就是导致显示重复错误的原因--根据Valueboxeditordecorator源,不应该这样做。至于其他问题,我希望有一个优雅的解决办法,但我认为这样就行了。
https://stackoverflow.com/questions/41595880
复制相似问题