- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 Vaadin 中使用 DateField 和转换器来启用 java.time 包的 LocalDateTime。
当我使用转换器并通过 setRangeEnd() 限制 DateField 时,DateField 始终显示用户错误,并显示消息“日期超出允许的范围”。不使用转换器它工作正常。
我的转换器:
public class LocalDateTimeToDateConverter implements Converter<Date,LocalDateTime> {
private static final long serialVersionUID = -4900262260743116965L;
@Override
public LocalDateTime convertToModel(Date value, Class<? extends LocalDateTime> targetType, Locale locale)
throws com.vaadin.data.util.converter.Converter.ConversionException {
if (value != null) {
return value.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDate().atStartOfDay();
}
return null;
}
@Override
public Date convertToPresentation(LocalDateTime value, Class<? extends Date> targetType, Locale locale)
throws com.vaadin.data.util.converter.Converter.ConversionException {
if (value != null) {
return Date.from(value.atZone(ZoneOffset.systemDefault()).toInstant());
}
return null;
}
@Override
public Class<LocalDateTime> getModelType() {
return LocalDateTime.class;
}
@Override
public Class<Date> getPresentationType() {
return Date.class;
}
}
MyView 在哪里使用 DateField:
dateField = new DateField();
dateField.setDateFormat("yyyy-MM-dd");
dateField.setRangeStart(null);
dateField.setRangeEnd(Date.from(lastAvailableDataDate.atZone(ZoneId.systemDefault()).toInstant()));
dateField.setConverter(new LocalDateTimeToDateConverter());
有人知道如何在使用转换器时设置范围吗?
最佳答案
我目前解决此问题的方法是扩展 DateField 类。
public class MyDateField extends DateField {
private static final long serialVersionUID = -7056642919646970829L;
public MyDateField() {
super();
}
public LocalDateTime getDate() {
Date value = super.getValue();
return DateToLocalDateTime(value);
}
public void setDate(LocalDateTime date) {
super.setValue(LocalDateTimeToDate(date));
}
public void setRange(LocalDateTime start, LocalDateTime end) {
if (start != null) {
super.setRangeStart(LocalDateTimeToDate(start));
} else {
super.setRangeStart(null);
}
if (end != null) {
super.setRangeEnd(LocalDateTimeToDate(end));
} else {
super.setRangeEnd(null);
}
}
private Date LocalDateTimeToDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
private LocalDateTime DateToLocalDateTime(Date date) {
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
}
}
现在不再需要转换器,并且 get/setDate() 方法与我们的 swing 日期选择器方法相对应。对于我们的情况,这可能是最好的解决方案。
关于java - 使用 Converter 时在 Vaadin DateField 中设置范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40780755/
我的设置.py: LANGUAGE_CODE = 'de' TIME_ZONE = require_env("TIME_ZONE_IDENTIFIER") USE_I18N = True USE_L1
我在使用 WTF-Forms 让 HTML5 日期选择器为 Flask 中的表单提供值时遇到问题。如果我将 HTML5 DateField 放到普通的旧 Vanilla WTF-Forms DateF
我有一个网格,其中的列配置为... { ... editor:new Ext.form.DateField({format:'m/d/Y'}), renderer: function
我有一个 ExtJS 日期字段。在应用程序的某些操作期间,最小值和最大值被分配给日期字段。最小值和最大值比当前日期早 4 年,但是当日期选择器打开时,它会打开禁用的当前日期。用户必须手动向后滚动 4
是否可以使用没有年份的 DateField?或者我必须使用 CharField 吗?我正在使用管理员来编辑模型。 最佳答案 您需要决定是否可以在模型(和数据库)上使用常规日期对象并只自定义表单小部件,
我正在尝试在 Django 模型中指定默认日期,例如: from datetime import date class A(models.Model): date = models.DateF
我正在尝试在 django 中验证用户分析表单,但我不能。 forms.dateField() 似乎有问题。它不验证(即 is_valid() 返回 false) 这是我的表单 dateField 条
我在 extjs 中有一个日期字段并具有以下配置: xtype: 'datefield', emptyText: 'mm/dd/yyyy', valid
我有一个模型,其中有一个日期字段 date_of_birth = models.DateField(blank=True, null=True, verbose_name="DOB") 我想将其格式化
在我的 ActivityFilterControl 组件中,我有两个 DateField,它们(在 .tml 文件中)位于 fieldset 部分内: ${message:search.form
我的问题是,如果我使用 vaadin 框架在 Web 应用程序的 UI 中放置一个日期字段(如以下代码),那么如何为其设置默认日期值?我还可以在 Eclipse 编辑器中看到带有日期字段的 setVa
我目前正在尝试使用两个 Vaadin DateField实例来创建两个日期之间的间隔。 我想将所选日期提取为类似于 2016-04-11 的格式。在我的情况下,时间和时区不是必需的。我只对日期感兴趣。
Scenario I have a DateField for users to search old auction informations. But old auction informatio
我已经按照说明 here 为我的表单创建了自定义表单类和模板. 但是我在添加带有日历的 DateFields 时遇到了问题。通常我只是做这样的事情: $dateField = new DateFiel
我遇到了无法将 DateField 中键入的日期保存到数据库的问题。我使用 Hibernate 作为 ORM 框架,Order 实体具有 java.sql.Date 字段。但据我所知,DateFiel
我在使用 VAADIN 8 时遇到了一个问题。我已经绑定(bind)了 FormLayout 上的所有字段,并希望将这些字段的值保存在数据库中。所有字段都填充了值。问题的本质是当对象保存到数据库时,D
我正在使用 ExtJS 2.1,但遇到以下问题,我讨厌“日期字段”。现在必须以“MM/DD/YYYY”格式输入日期。问题是如果用户输入类似“21/17”或“16/05”的内容,它会转换为有效日期。 (
我需要一个具有一些自定义行为的日期列,特别是我需要能够在同一字段中输入日期或年龄(年龄保持呈现为年龄,日期保持呈现为日期) 例如。输入“23”将使字段中的“23”保留为有效值,或者输入“22/1/88
我使用Ext.form.DateField,指定格式为“d/m/Y”,如下所示: { xtype : 'datefield', f
您好,我正在使用 Vaadin 8,我正在尝试使用 Vaadins DateField 进行用户输入。 private DateField date = new DateField("Date of
我是一名优秀的程序员,十分优秀!