2009-06-03 6 views
3

GWTでXMLファイルから動的メニューを読み込もうとしています。 XMLファイルには、ボタン名とアクション(水平パネルに追加される複合コンポジット)が必要です。XMLファイルからGWT動的メニュー。コンポジットのクラスをリフレクトする方法

クラスのリフレクションを実行する必要があるため、私には多くの問題があります。私は2つの異なるソリューション、クライアント側とサーバー側を試しました。クライアント側では、 "gwt-ent"と "gwt reflection"ライブラリを試しましたが、エラーが多く、Classesが反映されるように設定する必要があります。ダイナミックメニューで、セミダイナミックではありません)。サーバー側では、メニューを返そうとしましたが、サーバー側でクライアント側のウィジェットを処理することはできません。だから私は反映を行い、クライアントにインスタンスを返そうとしましたが、サーバー側ではクライアント側Classを取得することはできません。

誰かが他の解決方法を知っていますか?私は何か間違っている? コンポジットを水平パネルに配置するには、どのようにクラスを反映できますか?

あなたの助けにThansk。よろしくです。 よろしくお願いします。

答えて

1

1つのアプローチは、サーバー側のコードでクライアント側で適切なウィジェットを作成する「ファクトリ」インスタンスを作成することです。この "ファクトリ"は、クライアント(現在はDTO)にシリアル化されます。このようなもの:

public interface WidgetFactory { 
    public Widget createWidget(); 
} 

public class MenuOptionDTO implements Serializable { 
    public String optionText; 
    public WidgetFactory widgetFactory; 
} 

public class WidgetOnMenu extends Composite { 
    ... 
    public static class Factory implements WidgetFactory, Serializable { 
     public Widget createWidget() { 
      return new WidgetOnMenu(); 
     } 
    } 
    ... 
} 

サーバー側で通常のリフレクションを使用して、WidgetFactoryのインスタンスを作成できます。

<menu> 
    <option text="Option1" factory="com.acme.WidgetOnMenu.Factory"/> 
</menu> 

これはGWT Portlets frameworkで使用されているアプローチです。

関連する問題