从 bootstrap gwt java datetimepicker 获取值

Get value from bootstrap gwt java datetimepicker

我正在尝试在我的 gwt java 网络应用程序中使用 bootstrap3 datetimepicker,但我不确定我是否一切正常,因为它似乎没有传递值场。这是我的代码:

    datePicker = new DateTimePicker();
    datePicker.setFormat("dd MM yyyy hh ii"); 
    datePicker.setStartDate(new Date());
    datePicker.setLanguage(DateTimePickerLanguage.IT);
    Date expDate= datePicker.getValue();

对吗?因为它似乎没有传递任何价值。我还尝试添加一个事件处理程序,如下所示:

        datePicker.addValueChangeHandler(new ValueChangeHandler<Date>() {
        @Override
        public void onValueChange(ValueChangeEvent<Date> event) {
             Date expDate= event.getValue();
             datePicker.setFormat("dd MM yyyy hh ii"); 
        }
       });

我不明白是否需要事件处理程序来捕获 datetimepicker 的值,如果需要,我该如何在方法 onValueChange 的范围之外使用 expDate 变量,因为我不想它是一个全局变量。谢谢。

以上完整的class(去掉不必要的代码):

public class InsAst extends HTMLPanel {
private final AoLServiceAsync myAol = GWT.create(AoLService.class);
private DateTimePicker datePicker = new DateTimePicker();
private Date boxData;

public InsAst (final String cat) {

    super("");

    datePicker.setFormat("dd MM yyyy hh ii");
    datePicker.setStartDate(new Date());
    datePicker.setLanguage(DateTimePickerLanguage.IT);
    Label dataLabel = new Label("Exp date: ");
    dataLabel.setStyleName("control-label");
    dataLabel.getElement().getStyle().setProperty("float", "left");

    datePicker.addValueChangeHandler(new ValueChangeHandler<Date>() {
        public void onValueChange(ValueChangeEvent<Date> event) {
          boxData = event.getValue();
        }
      });

    objPanel.add(dataLabel);   
    objPanel.add(datePicker);

    addAstButton.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {

            String user=MenuBar.getUsername(); 
            Date expDate= boxData;

            [...other code]

}

onValueChange 应该有接收到的 ValueChangeHandler 中的值。

您可能应该调用另一个方法来传递该日期,而不是将其作为全局变量。

没有更完整的代码示例,很难说得更多。

PS:检查 GWT-Bootstrap 的工作样本展示:

注意:

最后发现问题出在这行代码:

datePicker.setFormat("dd MM yyyy hh ii");

可能传递了与 java 日期不兼容的错误类型的值。