GWT反射加载表格

时间:2012-05-24 23:13:31

标签: forms reflection lazy-loading gxt

我的情况是我必须为应用程序创建大量表单,表单都位于同一个包中。它们的名称如下:A11111.java,A11112.java等。

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

我已经查看了几个Reflection方法,但是你不能将派生字符串传递给它们。怎么做到最好?有几个帖子提到使用生成器,但是我试图对它们的逻辑进行排序而感到迷茫,而且没有一个与显示表单有关。

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

提前致谢

1 个答案:

答案 0 :(得分: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
    }
}