【发布时间】:2017-08-22 02:16:35
【问题描述】:
我知道 Vaadin 8.1.0 will include a new 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,而是为 Long 而不是扩展 AbstractRenderer,我使用自己的代码扩展 NumberRenderer,那么它可以工作。
这将我带到documentation where I need to setup the Renderer with a AbstractRendererConnector,但每当我尝试这样做时,我都会收到编译器错误,指出AbstractRendererConnector 无法解析为类型。然后当然我有一些编译器错误(在下面的代码中)。我的代码(仍在主 UI 类中)是:
@Connect(LocalDateRenderer.class)
class LocalDateRendererConnector extends AbstractRendererConnector<LocalDate>
{
@Override
public LocalDateRenderer getRenderer()
{
return (LocalDateRenderer) super.getRenderer();
}
}
任何有关如何将其链接起来以显示我的实际日期的帮助将不胜感激。谢谢。
在文档中也不清楚当他们引用TextRenderer 时哪个类是哪个类,因为它们使用相同的名称来表示不同的东西......
【问题讨论】:
-
仅供参考,Vaadin 框架 8.1.0 Alpha 2 is available。你可以看看他们的源代码。
-
我尝试构建类似的渲染器,但几个小时后放弃了,决定等待 8.1。我不着急,等8.1吧。正式出局,并将我的日期显示为字符串(野蛮,我知道..)同时..
-
只是一个指向问题的链接,其中包含主题github.com/vaadin/framework/issues/8377#issuecomment-290049482的讨论
-
如果您只想以某种特定格式显示它们,您可以使用converters 在 8.1.0 之前使用临时解决方法。如果您出于其他原因想做渲染器,请忽略我的评论
-
我查看了代码,几个小时后我放弃了。我找不到丢失的链接...
标签: java vaadin vaadin-grid localdate vaadin8