2012-05-24 103 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 
    } 
}