首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Vaadin8中为网格渲染LocalDateRenderer

如何在Vaadin8中为网格渲染LocalDateRenderer
EN

Stack Overflow用户
提问于 2017-03-29 04:19:22
回答 1查看 1.5K关注 0票数 1

我知道Vaadin 8.1.0 will include a new LocalDateRenderer需要与Java8的新date LocalDate一起工作,但同时我也在尝试设置我自己的自定义LocalDateRenderer。我得到了它的大部分工作,因为它都是挂接的,但根据文档,我需要设置一个AbstractRendererConnector,但没有这样的类...

下面的代码都在我的主UI类中(用于测试目的):

代码语言:javascript
复制
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类中)是:

代码语言:javascript
复制
@Connect(LocalDateRenderer.class)
class LocalDateRendererConnector extends AbstractRendererConnector<LocalDate> 
{
    @Override
    public LocalDateRenderer getRenderer() 
    {
        return (LocalDateRenderer) super.getRenderer();
    }
}

任何帮助如何让它连接起来,使它显示我的实际日期将非常感谢。谢谢。

此外,在文档中,当它们引用TextRenderer时,并不清楚哪个类是哪个类,因为它们使用相同的名称表示不同的事物……

EN

回答 1

Stack Overflow用户

发布于 2017-03-30 10:49:02

如果您的编译器不能将AbstractRendererConnector<T>解析为一个类型,那么您一定缺少一个依赖项。如果您使用的是Maven,那么您可以添加以下依赖项,假设您的<dependencyManagement>部分中有vaadin-bom

代码语言:javascript
复制
    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-client</artifactId>
    </dependency>

默认情况下,这个工件不包含在大多数Vaadin原型中。

还要小心:有两个Renderer接口,一个在com.vaadin.client.renderers中,另一个在com.vaadin.ui.renderers中。因为AbstractRendererConnector<T>实现了不同的Renderer接口,所以LocalDateRendererConnector.getRenderer()中的协变返回将不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43079174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档