首页 > 解决方案 > Vaadin DateField 具有空值和占位符

问题描述

我对使用自定义空值的 Vaadin DateField 有疑问。

LocalDate emptyDate = LocalDate.parse("1900-01-01");

DateField field = new DateField()
{
    @Override
    public boolean isEmpty()
    {
        return getValue() == null || getValue().equals(emptyDate);
    }

    @Override
    public LocalDate getEmptyValue()
    {
        return emptyDate;
    }
};
field.setPlaceholder("yyyy-MM-dd");
field.setValue(emptyDate); // Shows "1900-01-01" instead of placeholder
field.setValue(null); // Shows placeholder "yyyy-MM-dd"

我希望在值等于空值时看到占位符,但它仅在值为空时才有效。DateField#setPlaceholder 的文档声明“设置占位符文本。占位符是在字段为空时显示的文本,以提示用户输入。 ”所以这似乎不像人们期望的那样工作?

覆盖 #formatDate(LocalDate) 也不起作用:

@Override
protected String formatDate(LocalDate value)
{
    if (isEmpty())
    {
        return getPlaceholder();
    }
    else
    {
        return super.formatDate(value);
    }
}

使用 Vaadin 8.6.1

标签: javavaadinvaadin8

解决方案


推荐阅读