問題タブ [command-objects]

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.

0 投票する
1 に答える
1059 参照

validation - Grailsの重複するエラーメッセージ

私はgrailsを初めて使用し、問題があります。

私はGSPのこのスニペットを持っています:

コントローラ(MainController.groovy)はコマンドオブジェクトを使用します。両方のコードは次のとおりです。

問題は、間違った名前またはパス(空白または範囲外)を入力すると、4つのエラーが表示されることです。2つはパスワード用、2つはユーザー名用です。それらは同じですが、重複しています。

メソッド「boolvalidateCommand(){name && password}」を作成し、それをcommand.validate()に置き換えると重複がスローされないことがわかりましたが、Grailsの制約機能を使用して物事をドライに保ちたいと思います。

なぜこれが起こるのか考えていますか?本当にありがとう!

0 投票する
1 に答える
503 参照

grails - Grails プラグイン: すべてのコマンド オブジェクト クラスの取得

プラグインでは、すべてのドメインおよびコマンド オブジェクト クラスを繰り返し処理して、それらに何らかのメタ マジックを適用する必要があります。ドメイン クラスを取得することは問題ではありませんが、コマンド オブジェクトは、Grails アーティファクトとは見なされていないように見えるため、取得するのはそれほど簡単ではありません。ドキュメントを参照した後、次のコードを思いつきました。

これは機能しているように見えますが、webflow アクション内で使用されるコマンド オブジェクトは含まれていません。これはバグですか、それとも私のアプローチが間違っていますか?

0 投票する
2 に答える
4125 参照

unit-testing - Grails:サービスが注入されたコマンドオブジェクトをどのように単体テストしますか

コマンド オブジェクトを持つコントローラーをデータ バインディングでテストしようとしています。

Command Object には Service が注入されています。

しかし、コマンドオブジェクトをテストしようとすると、注入されたサービスメソッドは決して「注入」されないため、見つかりません

コマンドオブジェクト内でサービスをモックする方法はありますか?

試験方法

userService の getUser() メソッドが見つかりません

コード

呼び出されるコントローラーのログインメソッド、

コマンド オブジェクトには、「userService」が注入されています。

バリデーターはこの userService を呼び出してユーザーを見つけます

userService.getUser() は次のようになります。

0 投票する
2 に答える
4647 参照

grails - Grails:ネストされたコマンドオブジェクト

私のgrailsアプリには、他のコマンドオブジェクトのリストを含む外部コマンドオブジェクトがあります。

のかなり珍しいインスタンス化は、このアドバイスinnerCommandsに基づいています。ただし、のインスタンスを呼び出すと、検証はに含まれているのインスタンスを検証していないように見えることがわかりました。validate()OuterCommandInnerCommand

validate()コマンドオブジェクトをネストし、最も外側のオブジェクトでが呼び出されたときにコマンドオブジェクトのグラフ全体を検証することは可能ですか?

0 投票する
3 に答える
1792 参照

spring - Grails のコマンド オブジェクトでセッションを取得する

コマンドオブジェクト内からセッションを取得するにはどうすればよいですか?

私が試してみました:

これはスローします

java.lang.IllegalStateException: スレッドにバインドされた要求が見つかりません: 実際の Web 要求の外部で要求属性を参照していますか、または元の受信スレッドの外部で要求を処理していますか? 実際に Web リクエスト内で操作していてもこのメッセージが表示される場合、コードは DispatcherServlet/DispatcherPortlet の外部で実行されている可能性があります。この場合、RequestContextListener または RequestContextFilter を使用して現在のリクエストを公開します。

0 投票する
4 に答える
6824 参照

inheritance - grails ドメイン サブクラスで継承されたプロパティに制約を追加する方法

これが私がやりたいことです:

したがって、クラス A にはいくつかの制約が必要であり、Bには同じプロパティに同じ制約と追加の制約が必要です。

私はそれを機能させることができませんでした.Table-per-Hierarchyの概念と衝突することは想像できます.

そこで、クラス B のコンストラクターで検証できるクラス B の制約を持つ Command オブジェクトを導入することで、この問題を回避しようとしました。ただし、Command オブジェクトはコントローラー内でのみ使用できるようです (grails は、.validate がないと言い続けています)。 ()そのための方法)。

だから私の質問は: grails 制約を使用してこれを解決する最もエレガントな方法は何ですか (検証を手動で再実装するのではありません)? になり得る...

  • Table-per-Sub-Class コンセプトに切り替えますか?
  • コマンド オブジェクトをドメイン クラスで動作させるにはどうすればよいですか?
  • その他の方法で?

編集:親クラスの制約を繰り返すか、親クラスに制約をまったく持たなくても、子クラスのすべての制約を定義しても問題ありません。ただし、ソリューションは、同じ親クラスの複数の子クラス (異なる制約を持つ) に対して機能するはずです。

0 投票する
2 に答える
792 参照

unit-testing - Grails 1.3.5 コントローラ テスト nulls コマンド オブジェクト

「The Definitive Guide to Grails (Second Edition)」の 104 ページからそのまま引用します。

このテストを実行すると、次のエラーで失敗します。

...その時点で「cmd」参照がnullになるまで追跡しました。アクション controller.login が呼び出される前は、cmd は有効で入力されていますが、その後は null です。

コマンド オブジェクトをテストするにはどうすればよいですか?

0 投票する
1 に答える
1195 参照

spring-mvc - 1つのハンドラーメソッドのみのSpring@ModelAttribute

@ModelAttributeメソッドを特定のハンドラーメソッドに対してのみ呼び出し、1つのハンドラーメソッドの呼び出しに対してのみコマンドオブジェクトを提供することは可能ですか?特定のコントローラー内のハンドラーメソッドごとではありませんか?Spring Web-Portlet MVCを使用していますが、同じである必要があります...

これは、1つのコントローラー内のハンドラーメソッド呼び出しごとにこのforループが呼び出され、ビューに送信される各リクエストにimplicitModelが提供されるためです。

0 投票する
3 に答える
1103 参照

grails - 更新のための Grails でのコマンド オブジェクトの使用

サービスは複数のドメイン クラスにまたがる更新に使用されると読みました。しかし、私はコマンド クラスを持っており、トランザクション更新を行うロジックをコマンド クラスに入れることには重大な欠点がある (または Grails パラダイムを壊す) かどうかを知りたいと思います。何かのようなもの:

そしてコントローラーで

0 投票する
4 に答える
17630 参照

data-binding - Grailsコマンドオブジェクトのデータバインディング

Grailsは、リクエストパラメータをドメインオブジェクトとその関連付けにバインドするための非常に優れたサポートを備えています。.idこれは主に、データベースで終わるリクエストパラメータを検出し、それらをデータベースから自動的にロードすることに依存しています。

ただし、コマンドオブジェクトの関連付けを設定する方法は明確ではありません。次の例を見てください。

このオブジェクトには、とのシングルエンドの関連付けと。ProductTypeCommandとの多端の関連付けがありAttributeTypeCommandます。すべての属性タイプと製品タイプのリストは、このインターフェースの実装から入手できます。

このインターフェイスを使用して、GSPの製品および属性タイプの選択リストにデータを入力します。また、このインターフェイスをコマンドオブジェクトに依存性注入し、それを使用してコマンドオブジェクトのプロパティを「シミュレート」attributeTypesします。productType

実際に発生するのはattributeTypeIds、プロパティが関連するリクエストパラメータにバインドされ、ゲッター/セッターがプロパティをproductTypeId「シミュレート」することです。コマンドオブジェクトの関連付けを設定する簡単な方法はありますか?productTypeattributeTypes