问题标签 [gwt-editors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
397 浏览

java - GWT Editors - 如何基于一个Collection添加N个相同类型的子编辑器

我有一个对象,Supply可以是ElecSupplyGasSupply请参阅相关问题)。

无论正在编辑哪个子类,它们都有一个BillingPeriods 列表。

我现在需要BillingPeriodEditor根据该列表的内容实例化 N 个 s,并且对于我应该如何做感到非常困惑。

我正在使用 GWTP。这是SupplyEditor我刚刚开始工作的代码:

现在,由于 BillingPeriods 列表是任何 Supply 的一部分,我认为其逻辑应该在 SupplyEditor 中。

我在线程How to access PresenterWidget fields when added dynamic上得到了一些非常好的帮助,但那是在我完全实现编辑器框架之前,所以我认为逻辑在错误的地方。

非常感谢任何帮助。我可以发布更多代码(Presenter 和 View),但我不想让它太难阅读,他们所做的就是从数据存储中获取 Supply 并在 View 上调用 edit()。

我看过一些ListEditor 的例子,但我真的不明白!

0 投票
1 回答
433 浏览

java - GWT:ListEditor 错误地尝试验证从列表中删除的实体

问题是删除的 ContactDocumentseditor.getList().remove(index)仍然通过验证,因此无法保存已编辑的联系人。例如requestContext.save(),如果我添加新的 ContactDocument 并editor.getList().add()由于某些字段上的 @NotNull 违规而立即将其删除,则会因 onConstraintViolation 失败。

我有简单的关系:联系人有很多 ContactDocuments。我正在尝试使用请求工厂和编辑器框架编辑联系人。ContactDocuments 使用 JSR-303 进行注释以进行基本验证。

我的 ContactDocuments 集合的 ListEditor:

我的演示者来驱动它:

我该如何解决?

0 投票
1 回答
111 浏览

gwt - GWT 编辑器:保存时如何在实体上设置上次修改时间?

假设在客户端我有一个实体代理要由 UI 编辑,当我单击保存按钮时,最后修改时间作为字段保存在实体代理中。

问题是,在哪里插入 proxy.setLastModifiedTime(data) 调用?我总是得到

谢谢。

0 投票
1 回答
1112 浏览

gwt - GWT 编辑器:显示 ConstraintViolations 和 EditorErrors

我很难实现 GWT 编辑器同时显示可能ConstraintViolation的 s 和EditorErrors 。显示错误或验证违规都没有问题。

以下示例使用某个number字段Entity

实体.java:

实体编辑器.ui.xml

实体编辑器.java

当我validate()没有在号码框中输入任何内容就拨打电话时,会出现“不能为空”的消息。正确显示。使用“asdf”调用validate()我希望看到两条消息“不能为空”。和“坏值(asdf)”,但只显示第一个。当我不打电话时会显示编辑器错误,setConstraintViolations()但显然不会显示验证违规。

我错过了什么?

谢谢你。

0 投票
0 回答
226 浏览

gwt - GWT DateBox 和 EditorErrors

当绑定到驱动程序的 a 获取无效格式字符串EditorErrors时,生成/参与验证的最佳方法是什么。DateBox

目前,在 中DatePicker,它将字段标记为红色,但是需要让它参与到hasErrors父级中SimpleBeanEditorDriver并从 中报告这种类型的无效格式错误,dateBox以便为用户生成自定义错误消息。

0 投票
1 回答
1999 浏览

gwt - 必须如何将 ListEditor 用作另一个编辑器的子级?

我正在使用 GWT 2.5.0

我的意图是创建一个绑定到ParentBean对象的编辑器层次结构。ParentBean包含 a List<Group>,而beanGroup有 aList<ChildBean>List<Group>。从我发现的编辑器教程中,创建一个包含 ListEditor 作为其子编辑器之一的编辑器似乎很简单。但父编辑器似乎从未正确初始化子 ListEditor。

这是我如何尝试执行此操作的解释。

从下面的代码中,我创建了一个ParentBeanEditor由另一个编辑器组成的GroupListEditor. 工具。
_ 然后,包含一个子编辑器和一个.GroupListEditorIsEditor<ListEditor<Group, GroupEditor>>
GroupEditorGroupListEditorChildBeanEditor

ParentBeanEditor我用ParentBean包含对象列表的a初始化了Group,但GroupEditor从未为任何Group对象构造过。
我在方法中放置了断点EditorSource<GroupEditor>.create(int)以验证s 中的每个都GroupEditor被创建,但断点从未被命中(ListEditor 没有构造编辑器)。GroupParentBean

我预计GroupListEditor会被初始化,因为它是ParentBeanEditor. 列表和编辑器链都没有设置在GroupListEditor. 我试图通过扩展来GroupListEditor直接设置子编辑器的列表。这样做,我上面提到的断点被击中,并试图将 a 附加到编辑器链。但是编辑器链从未设置,并且在第 95 行抛出了 NPE。ParentBeanEditorValueAwareEditor<ParentBean>GroupListEditorGroupEditorListEditorWrapper

例子

这是GroupListEditor未按预期初始化的示例。永远不会设置,这EditorChain会导致在ListEditorWrapper第 95 行抛出 NPE。

数据模型

编辑

ParentBean 编辑器

组列表编辑器

组编辑

将使用这里ChildBeanListEditor提到的多态编辑器方法。这意味着特定的叶子编辑器根据枚举的值附加到编辑器链。但是,我没有显示该代码,因为我无法正确初始化。ChildBean.getType()GroupListEditor

0 投票
1 回答
647 浏览

google-app-engine - 请求工厂 GWT 编辑器更改未保留相关的 JDO 实体

我在 GWT 2.5 中使用(并且是新手)RequestFactory,在 AppEngine 数据存储区中使用具有一对多关系的 JDO 实体。我刚刚开始使用 GWT RequestFactoryEditorDriver 来显示/编辑我的对象。

Driver 可以很好地遍历我的对象,并正确显示它们。但是,当我尝试编辑“相关”对象上的值时,更改不会持久保存到数据存储区。

当我更改b.name我的 UI 并单击“保存”时,我注意到只调用了 A 的persist()调用。B 的 persist() 永远不会被调用。如何让 editorDriver 在 ARequest 和 BRequest 请求上下文中触发?(因为我想要的是InstanceRequest<AProxy,Void> persist()在我的编辑仅针对 B 对象时调用 B。)

此外,AFAICT,如果我在 BProxy 上有一个编辑器,则编辑器显示的任何对象 b(并遵循编辑器合同)都应由驱动程序自动“context.edit(b)”编辑以使其可变。但是,在我的情况下,“上下文”是一个 ARequest,而不是 BRequest。

我是否必须像这里提到的那样制作一个 ValueAwareEditor:GWT Editor framework 并在调用中创建一个新的 BRequestflush()并触发它,以便在触发 ARequest 之前对 B 的更改单独保留在 BRequest 中?

editorDriver.getPaths()给我:“bs”

此外,驱动程序肯定会看到 B 属性的更改,因为editorDriver.isChanged()在我 fire() 上下文之前返回 true。

我的客户端或服务器端日志没有错误,注释处理器运行时没有警告。

这是我设置驱动程序的方法:

这是我的实体的外观:

以下是代理:

这是我的服务存根:

编辑:我现在更改了我的 ARequest 接口和服务实现以支持“saveAndReturn”方法,这样我就可以在服务器端递归地“持久化”“a”:

我现在发现,当我“刷新”我的 RequestFactoryEditorDriver 时,客户端上下文对象具有我的新“b.name”值。但是,如果我调用“context.fire()”并在服务器端检查我的“saveAndReturn”方法,则生成的服务器端对象“a”,就在我“持久化”它之前,不包含对“ b.name”在列表的任何项目上。

为什么会发生这种情况?我如何调试为什么这个客户端信息不通过线路到达服务器?

我考虑过、尝试过并排除的选项:

1) 确保 APT 已经运行,并且 Proxy 或 Service 接口上没有警告/错误

2) 确保我的代理在 AProxy 中确实有一个有效的设置器用于列表

0 投票
1 回答
165 浏览

gwt - 如何在交换机上为同一属性设置两个编辑器?

我正在尝试创建一个编辑器,用户可以在其中选择现有项目或内联创建新项目。例如,想象一下典型的人-地址关系。我想要一个表单,用户在编辑一个人时,可以从一组现有地址中选择一个地址,也可以创建一个新地址,而无需移动到单独的表单。

天真地,这似乎需要两个不同的编辑器来处理同一个属性。假设我有一个PersonwhichAddress getAddress()setAddress(Address)。我的PersonEditor班级需要有两个名为address不同类型的子编辑;一个选择一个现有的人,另一个是编辑器的组合以进入该Address类型并允许编辑其属性。

通过阅读 上的文档CompositeEditor,似乎我必须利用它来动态选择子编辑器。但是,文档不够详细,无法让我真正理解应该如何实现接口。我已经尝试查看线索的实现方式ListEditor和实施方式,但还是有用的。由于我的副编辑编辑不同的路径,这似乎不太合适。OptionalFieldEditorListEditor

例如,尝试使用CompositeEditor,我不清楚在我的情况下应该返回什么createEditorForTraversal以及getPathElement应该返回什么。

如何动态地将两种不同类型的编辑器之一附加到一个属性?

0 投票
1 回答
63 浏览

gwt - 是否可以让两个不同的 EditorDrivers 同时编辑同一个对象?

在我的应用程序中,我有一个演示者 ( Presenter1),我用它来启动一个编辑器 ( EditorView1) 来编辑一个Foo对象。此 MVP 设置类似于此答案中描述的内容,https://stackoverflow.com/a/10699346/565863

现在,假设我需要创建另一个视图(EditorView2由 启动Presenter2),它也编辑一个Foo对象,但需要使用EditorView1.
EditorView1将由 EditorView2提供Presenter1

这种方法似乎草率且容易出错。还有另一种方法可以做到这一点吗?

0 投票
1 回答
816 浏览

gwt - GWT 编辑器和副编辑器

我正在尝试运行带有子编辑器的编辑器示例。刷新父级时,子编辑器的值为空。类是人员和地址。主编是:

副主编:

这是创建驱动程序的地方:

googleContact.getFirstname() 的值已填充,但 googleContact.getAddress() 始终为空。我错过了什么?