2012-05-24 65 views
0

我有一种情况,我必须为应用程序创建大量表单,表单都位于同一个包中。它们被命名为:A11111.java,A11112.java等。GWT反射加载形式

当用户点击NavigationPane时,我希望将表单加载到TabItem中并显示表单。问题是我需要通过将表单名称附加到位置来动态生成表单的名称,例如String formName =“com.foo.appName.client.forms”+ e.getData(“formCode”);类似的东西,其中e是用户点击事件。

我已经看过几种反射方法,但不能将派生的字符串传递给它们。如何最好地做到这一点?有几篇文章提到使用生成器,但我迷失在试图对其逻辑进行排序,而且没有任何关于显示表单的问题。

请注意,我没有将任何变量传递给窗体,或者以java文件的形式调用任何方法,也使用uibinding创建表单。

在此先感谢

回答

0

如果您是通过类加载器针对懒加载类,就像您使用the command design pattern时,请注意,它不能GWT应用程序内完成,为the frameworks JRE emulation only provides a subset of types and/or methods available in the JRE,所以大多数反射API - 如forName() - 将不可用。

而不是延迟加载类,请考虑将延迟渲染部件指向DOM。这可以通过在模块加载中实例化所有表单类来实现,但只能在制表符切换时呈现。将所有与渲染相关的功能放在onRender()回调中,并且您可以很好地去:

public class FormItem extends TabItem { 

    @Override 
    protected void onRender(Element parent, int index) { 
     super.onRender(parent, index); 

     // render related functionality 
    } 
}