ChangeHandler无法识别空白日期

时间:2014-05-01 05:50:00

标签: java eclipse gwt

我正在检查日期值的变化。 ValueChangeHandler识别日期(例如,在输入时将1/5/2014更新为DB)。但是,当我删除一个日期时,它无法被识别(即,数据库未更新为null - 我已尝试Backspace,突出显示和Del,使用空格进行改写)。然后我输入了一个新的日期(2014年2月5日),并将其更新为数据库。关于为什么这段代码不能识别我已经删除了日期的任何想法。

此致

格林

我已经用Braj建议的代码更新了这个。不幸的是,这不起作用。

final DateBox awardedDate = new DateBox();
awardedDate.setFormat(new DefaultFormat(DateTimeFormat.getFormat("dd/MM/yyyy")));
awardedDate.setValue(ymAwards.getCaAwardedDate());
awardedDate.setWidth("75px");

//Add change handler for the awarded date.
//Only a Leader or Administrator can update the date
if (accountLevel.equals("Leader") || accountLevel.equals("Administrator")) {
    awardedDate.addValueChangeHandler(new ValueChangeHandler<java.util.Date>() {
        int pog = 0;
        public void onValueChange(ValueChangeEvent<java.util.Date> event) {
            if (pog == 0) {
                pog++;
                Window.alert("First change hadler.");

                //Check for a null date and handle it for dateBoxArchived and dateBoxPackOut
                java.sql.Date sqlDateAwarded = awardedDate.getValue() == null ? null : new java.sql.Date(awardedDate.getValue().getTime());
                AsyncCallback<YMAwards> callback = new YMAwardedDateHandler<YMAwards>();
                rpc.updateYMAwarded(youthMemberID, returnAwID, sqlDateAwarded, callback);
            }else{
                pog = 0;
            }
        }
    });
    awardedDate.getTextBox().addValueChangeHandler(new ValueChangeHandler<String>() {
        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            if (event.getValue() == null) {
                Window.alert("Second change hadler.");
                //Check for a null date and handle it for dateBoxArchived and dateBoxPackOut
                java.sql.Date sqlDateAwarded = awardedDate.getValue() == null ? null : new java.sql.Date(awardedDate.getValue().getTime());
                AsyncCallback<YMAwards> callback = new YMAwardedDateHandler<YMAwards>();
                rpc.updateYMAwarded(youthMemberID, returnAwID, sqlDateAwarded, callback);
            }
        }
    });
}

2 个答案:

答案 0 :(得分:1)

添加以下行:

awardDate.setFireNullValues(true);

这是added in GWT 2.5

答案 1 :(得分:0)

也尝试这个

    final DateBox dateBox = new DateBox();

    dateBox.getTextBox().addValueChangeHandler(new ValueChangeHandler<String>() {

        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            if (dateBox.getValue() == null) {
                System.out.println("date value is empty");
                // your code here
            }
        }
    });

输出:

date value is empty

当日期选择器的日期发生任何变化时,

DateBox#addValueChangeHandler()会触发。

您可以使用TextBox#addValueChangeHandler()检查文本框中的值。