1

我正在寻找有人为我指明正确的方向(链接)或提供代码示例,RequestFactoryEditor使用GWT. 我的项目的模型之一具有多对一的关系:

@Entity
public class Book {

  @ManyToOne
  private Author author;
}

当我构建视图以添加/编辑一本书时,我想显示一个下拉列表,可用于选择哪位作者写了这本书。Editor框架如何做到这一点?

4

2 回答 2

4

对于下拉列表,您需要一个ValueListBox<AuthorProxy>,并且它恰好是 的编辑器AuthorProxy,所以一切都很好。但是您随后需要填充列表 ( setAcceptableValues),因此您可能必须向服务器发出请求以加载作者列表。

请注意setAcceptableValues自动将当前值(由 返回getValue,默认为null)添加到列表中(setValue如果需要,还会自动将该值添加到可接受值列表中),因此请确保您将null其作为可接受值传递,或者setValue使用调用之前列表中的值setAcceptableValues

于 2011-06-23T08:39:30.303 回答
0

我知道这是一个老问题,但无论如何这是我的两分钱。

我在类似的情况下遇到了一些麻烦。问题是可接受的值(实例)是在与用于编辑的不同的AuthorProxy中检索的。RequestContextBookEditorBookProxy

结果是,当我尝试编辑对象时,电流AuthorProxy总是重复。经过一番研究,我在 GWT Google 小组中找到了这篇文章,Thomas 解释说ValueListBoxBookProxy

“EntityProxy#equals() 实际上比较了它们的请求上下文和 stableId()。”

因此,由于我无法更改编辑工作流程,我选择通过设置在比较过程中使用不同对象字段ValueListBox的自定义来更改处理其值的方式。ProvidesKey

我的最终解决方案与此类似:

@UiFactory
@Ignore
ValueListBox<AuthorProxy> createValueListBox ()
{
    return new ValueListBox<AuthorProxy>(new Renderer<AuthorProxy>()
    {
    ...
    }, new ProvidesKey<AuthorProxy>()
    {
        @Override
        public Object getKey (AuthorProxy author)
        {
            return (author != null && author.getId() != null) ? author.getId() : Long.MIN_VALUE;
        }
    });
}

这个解决方案对我来说似乎没问题。我希望它可以帮助别人。

于 2014-10-02T18:15:29.990 回答