从 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 的工作样本展示:
注意:
- 在示例中,他们正在创建
DateBox
的实例而不是 DateTimePicker
。
- DateTimePicker 是 class 来自 http://gwtbootstrap.github.io/ which AFAIK is Bootstrap2 based. For Bootstrap3 check https://github.com/gwtbootstrap3。
最后发现问题出在这行代码:
datePicker.setFormat("dd MM yyyy hh ii");
可能传递了与 java 日期不兼容的错误类型的值。
我正在尝试在我的 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 的工作样本展示:
注意:
- 在示例中,他们正在创建
DateBox
的实例而不是DateTimePicker
。 - DateTimePicker 是 class 来自 http://gwtbootstrap.github.io/ which AFAIK is Bootstrap2 based. For Bootstrap3 check https://github.com/gwtbootstrap3。
最后发现问题出在这行代码:
datePicker.setFormat("dd MM yyyy hh ii");
可能传递了与 java 日期不兼容的错误类型的值。