我知道Vaadin 8.1.0 将包含一个新的 LocalDateRenderer来处理 Java 8 的新日期LocalDate
,但同时我正在尝试设置我自己的自定义 LocalDateRenderer。我的工作主要是因为它已经全部连接起来,但根据我需要设置的文档,AbstractRendererConnector
但没有这样的类......
以下代码都在我的主 UI 类中(用于测试目的):
private void setupGrid(Grid<Dog> grid)
{
grid.addColumn(dog -> dog.getBirthday(), new LocalDateRenderer()).setCaption("Birthday");
}
class LocalDateRenderer extends AbstractRenderer<Object, LocalDate>
{
public LocalDateRenderer()
{
super(LocalDate.class, "");
}
@Override
public JsonValue encode(LocalDate localDate)
{
return encode(DateTimeFormatter.ofPattern("MMM dd, YYYY").format(localDate), String.class);
}
}
我已经确认LocalDateRenderer
通过添加日志语句来调用它,但是在网格上没有显示任何值。如果我使用相同的代码,但不是LocalDate
为 aLong
而不是扩展,而是使用我自己的代码进行扩展,那么它可以工作AbstractRenderer
。NumberRenderer
这将我带到需要Renderer
使用 aAbstractRendererConnector
设置的文档,但是每当我尝试这样做时,我都会收到编译器错误,提示AbstractRendererConnector
无法解析为类型。然后当然我有一些编译器错误(在下面的代码中)。我的代码(仍在主 UI 类中)是:
@Connect(LocalDateRenderer.class)
class LocalDateRendererConnector extends AbstractRendererConnector<LocalDate>
{
@Override
public LocalDateRenderer getRenderer()
{
return (LocalDateRenderer) super.getRenderer();
}
}
任何有关如何将其连接起来以显示我的实际日期的帮助将不胜感激。谢谢你。
同样在文档中,不清楚当他们引用哪个类时,TextRenderer
因为它们使用相同的名称来表示不同的东西......