2016-11-30 8 views
0

サーバパッケージで作成されたカスタムアノテーションが共有クラスによって参照される場合、GWTはクラスをコンパイルしますか?サーバーコードの注釈がクライアントコードで使用されている場合、GWTはコンパイルされますか?

私のレコードタイプクラスには、いくつかの属性を持つアノテーション@MyRecordを注釈する必要があります。私は、反射を使用してサーバー側で属性値を取得できるようになりました。レコードタイプクラスは共有されており、クライアント&の両方のクライアントで使用されているためです。

注:@MyRecordは、GWTコンパイラではコンパイルできないサーバの下にあります。

問題がありますか代替方法がありますか?助けてください。

+1

これは、あなたが最初に試されている可能性がこれらの質問のいずれかのように聞こえる、と_then_は尋ねた、「なぜ」か「なぜない」あなたが発見したものに応じて。 –

+1

こんにちは@ColinAlworth、私は怠惰から私を引き出すために謝罪しました(私はGWTワークスペースをセットアップしていませんでした。 GWTワークスペースを設定して同じことを試した後、結果は** It works!**です。どうもありがとう。 – karthik

答えて

1

私は自分で試した後に投稿しています。
私のGWTプロジェクトには、以下のクラス/インターフェース&の注釈があります。 Commanderは私のレコード型である

agazhi 
    client 
     Agazhi.java 
     AgazhiService.java 
     AgazhiServiceAsync.java 
    server 
     AgazhiServiceImpl.java 
     Soldier.java 
     Staff.java 
    shared 
     Commander.java 
    Agazhi.gwt.xml 

@Soldier注釈であるとStaffはインターフェイスです。
Commanderクラスのオブジェクトは、クライアントからサーバー経由でServiceに渡されます。

テストケース:

  • 私は司令官クラス で@Soldierアノテーションでモジュールをコンパイルした場合、それは動作します。
  • 私は Commanderクラスに実装さStaffインタフェースでコンパイルする場合は、エラーをあなたの貴重な時間のために

No source code is available for type agazhi.server.Staff; did you forget to inherit a required module?

おかげでみんなを与えます。

0

Commanderクラスで実装されたStaffインターフェイスでコンパイルする場合は、GWTコンパイラがJavaScriptに変換できるように、Staff.javaを共有パッケージに移動する必要があります。また、Staff.javaは、GWTコンパイラに変換できない他のクラスに依存するべきではありません。

詳細については、モジュールのXMLドキュメントを参照してください。http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml

関連する問題