Java 从bean动态构建表

Java 从bean动态构建表,java,gwt,javabeans,Java,Gwt,Javabeans,我正在构建一个应用程序,其中有许多表(或表单)表示给定数据行的详细信息。 有些是相当大的,它不是真的很好,必须添加字段(与处理程序,逻辑等)一个接一个 我希望有一个工厂能够在给定bean的情况下构建表单(或表)。 我使用Java反射创建了一个非常好的工厂,结果发现GWT不支持它 有什么可以满足我的需要吗?因为GWT的编译是单片的(没有在编译时未知但在运行时使用的类),这意味着可以生成代码 因为它可以生成,这意味着您可以在GWT编译期间使用所谓的。GWT生成器可以在编译时已知的类上使用反射,它只是

我正在构建一个应用程序,其中有许多表(或表单)表示给定数据行的详细信息。 有些是相当大的,它不是真的很好,必须添加字段(与处理程序,逻辑等)一个接一个

我希望有一个工厂能够在给定bean的情况下构建表单(或表)。 我使用Java反射创建了一个非常好的工厂,结果发现GWT不支持它


有什么可以满足我的需要吗?

因为GWT的编译是单片的(没有在编译时未知但在运行时使用的类),这意味着可以生成代码

因为它可以生成,这意味着您可以在GWT编译期间使用所谓的。GWT生成器可以在编译时已知的类上使用反射,它只是一个不同于
java.reflect的API(就像java注释处理器也使用不同的API一样)

因此,您可以使用一个公共分母来标识在生成过程中需要考虑的类(例如,它们都实现相同的标记接口,或扩展相同的基类),并为每个类生成一个表/表单,并且:

  • 具有编辑/呈现对象类型参数的接口,可直接表示生成的表/表单;您需要创建一个子接口来修复类型参数和
    GWT.create()
    您的接口,就像
    PlaceHistoryMapperWithFactory
    UiBinder
    SimpleBaneditorDriver
    工作一样
  • 为给定的
    对象返回正确表/表单的工厂(使用
    if(klazz==Foo.Class){returnnew…}else if…
    );这与RequestFactory的工作原理类似
您将从代码中看到:

  • 标识可渲染对象的标记接口或基类
  • 工厂或
    GWT.create()
  • 可能是工厂的接口或基类,您可以将其传递到
    GWT.create()
    ,以触发生成器并获取其生成的实现