問題タブ [requestfactory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - オブジェクトの構成に RequestFactory: .with(propertyRefs) を使用する方法
私は GWT の初心者であり、プロのアドバイスが必要です。
私の質問は、これらの propertyRefs 自体に取得したいアイテムのリストが含まれている場合に、一種の「ツリー」構造に RequestFactory: .with(propertyRefs) を使用する方法です。
いくつかの詳細:
サーバー側には、4 つのドメイン オブジェクト A、B、C、D の階層があります。
- オブジェクトにはリストが含まれています(または、参照を保持すると言ったほうがよいでしょう)リスト
- B はリストを含む
- C には List が含まれます。
上記のすべてのドメイン オブジェクトには、クライアント側で使用する対応するプロキシ インターフェイス AProxy、BProxy、CProxy、DProxy があります。
クライアント側では、一度 AProxy オブジェクトをリクエストすることでオブジェクトのすべての階層を取得したいので、「get」メソッドを使用したデータ アクセスの容易さから利益を得て、サブオブジェクトごとにサーバー リクエストをループする必要がなくなります。 、サブサブオブジェクトなど
仕様により!私はsmthを使用する必要があります。.with(“property ref”) のように階層の 1 つのレベルを取得しますが、構成の次のレベルを取得するのはどうでしょうか (私の場合、すべてのオブジェクト B のリストとすべてのオブジェクト C のリスト)。
前もって感謝します。
gwt - tomcatでのGWT2.4rc1RequestFactoryの問題
gwtアプリケーションはgwt2.4rc1の開発モードで正常に動作していますが、tomcat 6にデプロイすると、最初のrequestfactory呼び出しが行われたときに、サーバー側で次の例外が発生します。
クライアント側では、500(内部サーバーエラー)
android - Maven を使用した GWT でのアノテーション処理
gwt アプリと同じ requestfactories を使用して、Android アプリケーションがサーバーと通信できるようにしようとしています。Androidアプリとgwtアプリの両方をビルドするためにmavenを使用しています。Android で request-factory 呼び出しが行われると、例外が発生します。
ビルドには Java 1.6 を使用しています。gwt のバージョンは 2.4 (rc1) です。maven-processor-plugin とインポートした requestfactory-apt を使ってみました。しかし、どういうわけか、maven プロセッサ プラグインはプロセッサを見つけられないようです。構成がどのように見えるかわかりません。
私は持っている:
ターゲット フォルダーに注釈用のフォルダーが作成されますが、空です。問題が何であるかを誰かが知っていますか?他にどのような情報が必要ですか?
更新: バージョンを 2.0.3-SNAPSHOT に変更しました。今私は得る:
しかし、このフォルダにはファイルがありません。追加すると:
私のポンへ。エラーメッセージが表示されます:
今、私は再び立ち往生しています:-/
gwt - インターフェイス/抽象クラスのValueTypeを持つRequestFactory
以下は私のドメインクラスです
PersonProxyをEntityProxyとして作成するのは簡単で、person.getName()に対して正常に機能していました。
VehicleProxyをValueProxyとして作成し、.with('vehicle')を使用してfire()を呼び出しましたが、エラーが発生します。
ドメインタイプcom....AbstractVehicle $$ EnhancerByCGLIB$$e86549b9をクライアントに送信できません。
PersonProxyでは@ProxyFor(value = Person.class、locator = PersonLocator.class)
を取得しましたVehicleProxyでは@ProxyFor(value = Vehicle.class)を取得しました
では、RequestFactoryでそのような継承を処理する方法は?
VehicleをValueProxyからEntityProxyに変更する必要がありますか?
次に、VehicleLocatorのメソッドを実装する方法は?
gwt - EntityProxy の既定のフィールド値を設定できますか?
私がこれを持っているとしましょう:
作成されたプロキシは空です。一部のフィールドにデフォルト値を設定する方法はありますか? たとえば、このプロキシには double のtimeAllocationがあります。これを行わなくても 0 に設定できますか:
ありがとうございました
gwt - 複雑なユースケースでの GWT エディターの使用
Google フォームの作成ページに非常によく似たページを作成しようとしています。
これは、GWT MVP フレームワーク (Places and Activities) と Editors を使用してモデル化しようとしている方法です。
CreateFormActivity (アクティビティとプレゼンター)
CreateFormView (ビュー用のインターフェイス、ネストされた Presenter インターフェイスを使用)
CreateFormViewImpl (CreateFormView および Editor< FormProxy > を実装します)
CreateFormViewImpl には、次のサブエディターがあります。
- テキストボックスのタイトル
- テキストボックスの説明
- QuestionListEditor 質問リスト
QuestionListEditorは IsEditor< ListEditor< QuestionProxy, QuestionEditor>> を実装します
QuestionEditorは Editor < QuestionProxy> を実装します QuestionEditor には次のサブエディタがあります。
- テキストボックスの質問のタイトル
- テキストボックスのヘルプテキスト
- ValueListBox questionType
- 以下の各質問タイプのオプションの副編集者。
各質問タイプのエディター:
TextQuestionEditor
ParagraphTextQuestionEditor
複数選択問題エディタ
チェックボックスQuestionEditor
ListQuestionEditor
ScaleQuestionEditor
GridQuestionEditor
具体的な質問:
- フォームから質問を追加/削除する正しい方法は何ですか。 (フォローアップの質問を参照)
- 質問の種類ごとにエディターを作成するにはどうすればよいですか? questionType 値の変更を聞いてみましたが、その後どうすればよいかわかりません。(BobVが回答)
- 各質問タイプ固有のエディターは、optionalFieldEditor を使用してラッパーにする必要がありますか? 一度に使用できるのは の 1 つだけです。(BobVが回答)
- オブジェクト階層の奥深くにあるオブジェクトの作成/削除を最適に管理する方法。例) 質問番号 3 の選択式問題の解答を指定する。(フォローアップの質問を参照)
- OptionalFieldEditor エディターを使用して ListEditor をラップできますか? (BobVが回答)
回答に基づく実装
質問エディター
質問ベース データ エディタ
サブタイプの例
残っている唯一の問題は、QuestionData サブタイプ固有のデータが表示またはフラッシュされていないことです。私が使用しているエディターのセットアップに関係していると思います。
たとえば、プロンプトの値BooleanQuestionDataEditor
は設定もフラッシュもされず、rpc ペイロードでは null です。
私の推測では、QuestionDataEditor は LeafValueEditor を実装しているため、サブエディターがアタッチされていても、ドライバーはサブエディターにアクセスしません。
助けてくれる人に感謝します!!!
gwt - GWT リクエスト ファクトリ: 完全なエンド ツー エンドの WriteOperation.DELETE シナリオの説明を手伝ってください。
最近、多くの gwt リクエスト ファクトリの例を見てきましたが、まだ全体像を見つけることができません。
GWT リクエスト ファクトリのスイート スポットは CRUD (作成/読み取り/更新/削除) です。そうは言っても:
- 「更新」の場合でも、EntityProxyChange (イベント) の発生の責任者が誰であるかは明確ではありません。
クライアント側のリクエストファクトリが「見た」EntityProxyのローカルキャッシュを保持していることをどこかで読んだ(どこを忘れたか)、それが新しいものを「見た」場合は、EntityProxyChange(イベント)を起動します
つまり、私の「updatePerson()」メソッドが (新しく更新された) PersonProxy を返す場合、ローカル クライアント側のリクエスト ファクトリ インフラストラクチャは、この新しく更新された人を (つまり、更新された versionId によって) 「見る」ことを意味しますか?自動的に EntityProxyChange (イベント) を起動しますか?
- 「削除」の場合、リクエスト コンテキストで「deletePerson()」という関数を作成するとします。リクエストがサーバーに到着する方法を理解しており、たとえば SQL DELETE を実行してエンティティを削除しますが、 WriteOperation=DELETE を使用して EntityProxyChange (イベント) を発生させる責任がありますか? これらのイベントはサーバー側で発生しますか? クライアント側?
listwidget の例 ( http://code.google.com/p/listwidget ) を見てきましたが、「itemlist」の削除では、全体のブルート フォース リフレッシュを実行するだけで「ごまかす」ようなものです。リスト (ただし、その詳細は必ずしも listwidget が最初に説明しようとしているものではないことは理解しています); WriteOperation.DELETE イベントをリッスンし、そのエンティティだけを ListDataProvider から削除する EntityProxyChange (Event) ハンドラーが表示されることを期待していました。
ServiceLayer/ServiceLayerDecorator.isLive() はこれに影響しますか?
gwt - GWT エディターと RequestFactory を使用したコレクションの編集
コンテキストについては、元の質問を参照してください。
追加のコンテキスト:
- 永続化には Objectify-Appengine が使用されます。
FormProxy
QuestionProxy
型は EntityProxyですQuestionDataProxy
およびそのサブタイプはValueProxy
- すべての Editor は を実装
HasRequestContext
し、QuestionData
サブタイプ Editorsの場合はHasRequestContext.setContext()
、親から明示的に呼び出されます。
最初の問題は Collections に関係し、2 番目の問題は Polymorphic types に関係しています。問題がエディターまたは RequestFactory の使用方法にあるのかどうかはわかりません。データは RPC ペイロードに存在しないため、永続化の設定を除外できます。
問題
QuestionProxy の値は、RPC リクエストですべて null です (QuestionProxy が新しく作成された場合、それ以外の場合は OK)。
質問
Questions
フォームに追加/削除する正しい方法は何ですか? Question
、Form
、およびエディタの使用中に作成、編集、更新メソッドを呼び出すシーケンスは何ですかQuestionData
。
現在のソリューション
質問の追加機能 (アクティビティ内):
質問を削除するには、質問にフラグを付けます。これにより、サーバーのリストから削除され、削除されます。(ハック)これは、すでに保存されている質問に対してのみ機能します。
gwt - 不変のValueProxyプロパティを持つEntityProxies->「セッターを見つけることができませんでした」
RequestFactoryに頭を悩ませようとしていますが、いくつか問題があります。不変タイプ(joda-time LocalDate)のvalueproxyであるプロパティを持つentityproxyがあり、サーバーへの呼び出しでこのentityproxyを使用する際に問題が発生しています。
entityproxyにプロパティのゲッターのみを含め、valueproxyにプリミティブプロパティのゲッターのみを含めることで、プロパティを読み取り専用にしました。
ただし、私が知る限り、サービスメソッドの呼び出しでentityproxyを引数として使用すると、参照されているvalueproxyは自動的に編集済みとしてマークされ、そのすべてのプロパティがデルタに含まれますか?
これにより、ReflectiveServiceLayerはLocalDateに欠落しているセッターに関する例外をスローします。
私はこれを回避するために「setProperty」をオーバーライドするServiceLayerDecoratorを実装するというアイデアをいじくり回してきましたが、それが良い解決策であるかどうかはわかりません。これを修正する「適切な」方法はありますか?理想的には、AbstractRequestContextに、サーバーへの呼び出しに不変のプロパティを含めないようにします。
GWT2.3を使用しています
編集:私はこのような回避策を作成しましたが、これが正しいアプローチであるかどうかはまだわかりません: