问题标签 [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.
java - GWT Editors - 如何基于一个Collection添加N个相同类型的子编辑器
我有一个对象,Supply
可以是ElecSupply
或GasSupply
(请参阅相关问题)。
无论正在编辑哪个子类,它们都有一个BillingPeriod
s 列表。
我现在需要BillingPeriodEditor
根据该列表的内容实例化 N 个 s,并且对于我应该如何做感到非常困惑。
我正在使用 GWTP。这是SupplyEditor
我刚刚开始工作的代码:
现在,由于 BillingPeriods 列表是任何 Supply 的一部分,我认为其逻辑应该在 SupplyEditor 中。
我在线程How to access PresenterWidget fields when added dynamic上得到了一些非常好的帮助,但那是在我完全实现编辑器框架之前,所以我认为逻辑在错误的地方。
非常感谢任何帮助。我可以发布更多代码(Presenter 和 View),但我不想让它太难阅读,他们所做的就是从数据存储中获取 Supply 并在 View 上调用 edit()。
我看过一些ListEditor 的例子,但我真的不明白!
java - GWT:ListEditor 错误地尝试验证从列表中删除的实体
问题是删除的 ContactDocumentseditor.getList().remove(index)
仍然通过验证,因此无法保存已编辑的联系人。例如requestContext.save()
,如果我添加新的 ContactDocument 并editor.getList().add()
由于某些字段上的 @NotNull 违规而立即将其删除,则会因 onConstraintViolation 失败。
我有简单的关系:联系人有很多 ContactDocuments。我正在尝试使用请求工厂和编辑器框架编辑联系人。ContactDocuments 使用 JSR-303 进行注释以进行基本验证。
我的 ContactDocuments 集合的 ListEditor:
我的演示者来驱动它:
我该如何解决?
gwt - GWT 编辑器:保存时如何在实体上设置上次修改时间?
假设在客户端我有一个实体代理要由 UI 编辑,当我单击保存按钮时,最后修改时间作为字段保存在实体代理中。
问题是,在哪里插入 proxy.setLastModifiedTime(data) 调用?我总是得到
谢谢。
gwt - GWT 编辑器:显示 ConstraintViolations 和 EditorErrors
我很难实现 GWT 编辑器同时显示可能ConstraintViolation
的 s 和EditorError
s 。显示错误或验证违规都没有问题。
以下示例使用某个number
字段Entity
实体.java:
实体编辑器.ui.xml
实体编辑器.java
当我validate()
没有在号码框中输入任何内容就拨打电话时,会出现“不能为空”的消息。正确显示。使用“asdf”调用validate()
我希望看到两条消息“不能为空”。和“坏值(asdf)”,但只显示第一个。当我不打电话时会显示编辑器错误,setConstraintViolations()
但显然不会显示验证违规。
我错过了什么?
谢谢你。
gwt - GWT DateBox 和 EditorErrors
当绑定到驱动程序的 a 获取无效格式字符串EditorErrors
时,生成/参与验证的最佳方法是什么。DateBox
目前,在 中DatePicker
,它将字段标记为红色,但是需要让它参与到hasErrors
父级中SimpleBeanEditorDriver
并从 中报告这种类型的无效格式错误,dateBox
以便为用户生成自定义错误消息。
gwt - 必须如何将 ListEditor 用作另一个编辑器的子级?
我正在使用 GWT 2.5.0
我的意图是创建一个绑定到ParentBean
对象的编辑器层次结构。ParentBean
包含 a List<Group>
,而beanGroup
有 aList<ChildBean>
和List<Group>
。从我发现的编辑器教程中,创建一个包含 ListEditor 作为其子编辑器之一的编辑器似乎很简单。但父编辑器似乎从未正确初始化子 ListEditor。
这是我如何尝试执行此操作的解释。
从下面的代码中,我创建了一个ParentBeanEditor
由另一个编辑器组成的GroupListEditor
. 工具。
_
然后,包含一个子编辑器和一个.GroupListEditor
IsEditor<ListEditor<Group, GroupEditor>>
GroupEditor
GroupListEditor
ChildBeanEditor
ParentBeanEditor
我用ParentBean
包含对象列表的a初始化了Group
,但GroupEditor
从未为任何Group
对象构造过。
我在方法中放置了断点EditorSource<GroupEditor>.create(int)
以验证s 中的每个都GroupEditor
被创建,但断点从未被命中(ListEditor 没有构造编辑器)。Group
ParentBean
我预计GroupListEditor
会被初始化,因为它是ParentBeanEditor
. 列表和编辑器链都没有设置在GroupListEditor
. 我试图通过扩展来GroupListEditor
直接设置子编辑器的列表。这样做,我上面提到的断点被击中,并试图将 a 附加到编辑器链。但是编辑器链从未设置,并且在第 95 行抛出了 NPE。ParentBeanEditor
ValueAwareEditor<ParentBean>
GroupListEditor
GroupEditor
ListEditorWrapper
例子
这是GroupListEditor
未按预期初始化的示例。永远不会设置,这EditorChain
会导致在ListEditorWrapper
第 95 行抛出 NPE。
数据模型
编辑
ParentBean 编辑器
组列表编辑器
组编辑
将使用这里ChildBeanListEditor
提到的多态编辑器方法。这意味着特定的叶子编辑器根据枚举的值附加到编辑器链。但是,我没有显示该代码,因为我无法正确初始化。ChildBean.getType()
GroupListEditor
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 中确实有一个有效的设置器用于列表
gwt - 如何在交换机上为同一属性设置两个编辑器?
我正在尝试创建一个编辑器,用户可以在其中选择现有项目或内联创建新项目。例如,想象一下典型的人-地址关系。我想要一个表单,用户在编辑一个人时,可以从一组现有地址中选择一个地址,也可以创建一个新地址,而无需移动到单独的表单。
天真地,这似乎需要两个不同的编辑器来处理同一个属性。假设我有一个Person
whichAddress getAddress()
和setAddress(Address)
。我的PersonEditor
班级需要有两个名为address
不同类型的子编辑;一个选择一个现有的人,另一个是编辑器的组合以进入该Address
类型并允许编辑其属性。
通过阅读 上的文档CompositeEditor
,似乎我必须利用它来动态选择子编辑器。但是,文档不够详细,无法让我真正理解应该如何实现接口。我已经尝试查看线索的实现方式ListEditor
和实施方式,但还是有用的。由于我的副编辑编辑不同的路径,这似乎不太合适。OptionalFieldEditor
ListEditor
例如,尝试使用CompositeEditor
,我不清楚在我的情况下应该返回什么createEditorForTraversal
以及getPathElement
应该返回什么。
如何动态地将两种不同类型的编辑器之一附加到一个属性?
gwt - 是否可以让两个不同的 EditorDrivers 同时编辑同一个对象?
在我的应用程序中,我有一个演示者 ( Presenter1
),我用它来启动一个编辑器 ( EditorView1
) 来编辑一个Foo
对象。此 MVP 设置类似于此答案中描述的内容,https://stackoverflow.com/a/10699346/565863
现在,假设我需要创建另一个视图(EditorView2
由 启动Presenter2
),它也编辑一个Foo
对象,但需要使用EditorView1
.
EditorView1
将由 EditorView2
提供Presenter1
。
这种方法似乎草率且容易出错。还有另一种方法可以做到这一点吗?
gwt - GWT 编辑器和副编辑器
我正在尝试运行带有子编辑器的编辑器示例。刷新父级时,子编辑器的值为空。类是人员和地址。主编是:
副主编:
这是创建驱动程序的地方:
googleContact.getFirstname() 的值已填充,但 googleContact.getAddress() 始终为空。我错过了什么?