我正在构建一个包含许多表(或表单)表示给定数据行详细信息的应用程序。 有些是非常大的,不一定要逐个添加字段(使用处理程序,逻辑等)。
我想要的是让工厂能够在给定bean的情况下构建表单(或表)。 我使用Java反射创建了一个非常漂亮的工厂,但却发现GWT不支持它......
有什么能满足我的需求吗?
答案 0 :(得分:2)
因为GWT的编译是 monolithic (可能没有在编译时未知但在运行时使用的类),这意味着可以生成代码。
因为它可以生成,这意味着您可以使用所谓的deferred binding在GWT编译期间执行此操作。 GWT生成器可以对编译时已知的类使用反射,它只是一个与java.reflect
不同的API(就像Java Annotation Processors也使用不同的API一样)。
因此,您可以使用通用分母来标识生成中需要考虑的类(例如,它们都实现相同的标记接口,或扩展相同的基类)并为每个生成一个表/表,并且:或者:
GWT.create()
您的界面,就像PlaceHistoryMapperWithFactory
,UiBinder
或SimpleBeanEditorDriver
一样。Class<?>
对象返回正确的表/表单(使用级联if (klazz == Foo.class) { return new … } else if …
);这与RequestFactory的RequestContext.create()
您从代码中看到的只有:
GWT.create()
GWT.create()
来触发生成器并返回生成的实现