質問

私は多くのモジュールです。

例えば私は家庭のエントリポイントのホームページおよび管理 エントリポイントの管理者ページです。

<entry-point class='com.company.project.client.HomeModule'/> 
<entry-point class='com.company.project.client.AdminModule'/> 

とっ設定しいチェックsomtこのように私 OnModuleLoad:

if((RootPanel.get("someHomeWidget")!=null)&& 
  (RootPanel.get("someOtherHomeWidget")!=null)) 
{ 
  // do the stuff 
} 

ために、管理者にEntrypointない期間が作成されたときに実行されるホーム ページが開かれました。

なしチェックの上にまたがることをしている場合は、divと 同じ名前の両方の管理ページのどんを注入する まわせていきます。

この臭1000マイル離れたとが明らかに思っていたが、あるきっかけで何が正しい ないというこの人。

のお役に立てるようお願いいたします。

役に立ちましたか?

解決

正しい方法は、適切なdiv要素に適切なウィジェットスティックモジュールごとに単一のエントリポイントを有することである。

RootPanel panel = RootPanel.get("someHomeWidget");
if (panel) panel.add(new HomeWidget());

panel = RootPanel.get("adminWidget");
if (panel) panel.add(new AdminWidget());

そうすれば、それはちょうどあなたが持っているすべてのdiv要素を探してページをスキャンし、適切なウィジェットを挿入します。だからあなたのHTMLページには、GWTのコードがどのような状況に対処する準備ができたときやウィジェットが表示されているかを決定します。その臭い上記については何もありません、それはあなたのエントリポイントが書かれるべき方法です。

あなたの管理エリアと通常のエリアは全く異なっている場合は、

の代替がある(例:あなたが別々の時間にそれらをロードする)。そして、彼らは別のエントリ・ポイントと独立したモジュール、でなければなりません。

他のヒント

そもそも複数のページをGWT玩具のアプリだと思いきっかけになるかもしれないとです。がかかったマッサージの配備記述子(myApp.gwt.xmlが、こうと思います。

  • されたのを実装するクラスEntryPointと追加コードに参加するとともに、事業部の新しいページです。
  • コピー元のgwt.xml 変更は二つのことをやろうとしてい
    • このモジュール-名前の変更によって変更"anothergwtapp"
    • のエントリポイントを指定された新しいクラスです。
  • 私がプロジェクトのコンパイルがディレクトリの"戦争"というフォルダ(待つので...)"anothergwtapp".が含まれている"anothergwtapp.nocache.js"というGWTがあります。
  • 最後に、コピーして、orginal HTMLページの"stockwatcher/stockwatcher.nocache.js"と"anothergwtapp/anothergwtapp.nocache.jsあっし-のチュートリアルっている方々が入会されると私の機)
    • 変更しましたが、新しいHTML少し異なる新divsのための新しいエントリポイントのonloadに移植したもので追加の簡単なhrefにページの最初のページです。

内にあります。での複製gwt.xml を提供する新しい名前のモジュールといった新しいアプリページです。また、その他のリンクがあるとありがたいで実際に行った記載が多すぎて言葉とリダイレクトなどにつあまり気にしなかったの読みとか付けたやつでも強い私は、最新のGWTプラグインのためのガリレオんIJWsます。

はいけない別のページとして管理し、ホームページを考えます。すなわち、単一のエントリポイント、ただ1つのページがあるとして、ページの概念は、GWTには適用されません。  あなたが別のページの効果を与えたい場合は、GWTの機能をURL書き換えを使用します。

あなたが別のエントリポイントを使用したくない場合は、

、その後、別のモジュールを使用し、上記のコメントで言ったように。

これは、唯一のエントリーポイントを持っている方が良いでしょう。一つのモジュール内の複数のエントリポイントのすべてを同時に開始し、それは時々、あなたが期待していなかったことを行うことができます。

あなたは別に、それを処理する方法のオプションをたくさん持っています: - 2つの異なるコンパイル管理者用と家庭用アプリケーションのための1つを持っています。 - あなたが管理者またはホームを望むことを示すために歴史トークンを使用します - どちらか一方を表示するようにJS変数を確認 - 管理者またはホーム(RootPanel.get(ID))を表示するには、特定のDIVのIDの存在を確認してください - 使用のURLパラメータは、アプリケーションを示します。 - ...など。

これを達成するための簡単な(トリッキー)方法があります:

メインクラスあなたのエントリポイントを作成します。

<module rename-to='gwt'>
  <inherits name='com.google.gwt.user.User'/>
  <entry-point class='com.example.client.Main'/>
  <source path='client'/>
  <source path='shared'/>
</module>;<br/>

ディスパッチャのように動作するように、このMain.javaを作成します:

package com.example.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;

public class Main implements EntryPoint {

  public void onModuleLoad() {

    String url = Window.Location.getHref();
    if ( url.indexOf("?install")>-1 ) {
      Install install = Install.getInstance();
      RootPanel.get().add(install);      
    else if ( url.indexOf("?admin")>-1 ) {
      Admin admin = Admin.getInstance();
      RootPanel.get().add(admin);    
    } else {
      Application app = Application.getInstance();
      RootPanel.get().add(app);      
    }
  }
}

これで異なるクラスのアプリケーション、管理者およびインストール 別々のユニットのように働きます。

ここでは例えば単純なインストールします。

package comexample.client;

import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;

public class Install extends FlowPanel {

  /** Singleton stuff - to access Main from all subclasses! */
  private static Install singelton;
  public static Install getInstance() {
    if (singelton == null) {singelton = new Install();}
    return singelton;
  }

  /** Constructor - called by Main.onModuleLoad() */
  private Install() {
    this.add(new HTML("<h1>Do whatever You have to do!</h1>"));
  }
}

あなたはシングルトンのもの(のgetInstance)を必要としませんが、それは大きな用途に非常に便利です。

今/戦争・ディレクトリにインストールという名前のディレクトリや管理者を作成し、非常にそれらの中で、このようにHTMLページを作成します:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; URL=/index.html?install">
</head>
<body></body>
</html>

したがって、ユーザーは、自分の http://www.example.com/installするに彼ブラウワーを指示したときに http://www.example.com/index?install とのindex.htmlにリダイレクトされますリクエストをディスパッチし、Install.javaをロードするMain.javaにバインドされている。

私は自分のブログで、このためのソリューションを持っています。あなたは、複数のエントリポイントを持っていると、URL書き換えを使用するサンプルMavenプロジェクトをダウンロードすることができます。見てください: http://zenoconsulting.wikidot.com/blog:16する

あなたはまだ、このフレームワークを試してみましたか? http://gwtmultipage.org/する クラウディウス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top