問題タブ [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 に答える
671 参照

grails - Grails - コマンド オブジェクトとサブオブジェクトのエラーを組み合わせる

Grails: ドメイン オブジェクトのエラーとコマンド オブジェクトのエラーを組み合わせる方法を調べました。、しかし、何らかの理由で解決策がうまくいきません。Grails 2.2.1 ではなく、Grails 1.3.7 のみに対応している可能性があります。

InnerObjectCommand のリストを含むコマンド オブジェクト OuterObjectCommand があります。コントローラーに手動で入力してから、検証を呼び出しています。OuterObjectCommand で validate() を呼び出しても、InnerObjectCommand リストが検証されていないように見えるため、リストのすべての要素を個別に検証します。私がやりたいことは、InnerObjectCommand オブジェクトと OuterObjectCommand オブジェクトのすべてのエラーを flash.errors に追加することです。これどうやってするの?

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

grails - Grails がコマンド オブジェクトにバージョンを追加すると、params の ID とバージョンがバインドされない

ここで本当に明らかな何かが欠けている場合は申し訳ありませんが、この問題で髪を引っ張っています.

コマンドオブジェクトがあります:

コントローラーでこれにバインドします:

このシナリオでは、すべて問題ありません。今、リクエストパラメーターでコマンドオブジェクトに渡されるバージョンフィールドを追加しようとしています:

ただし、バインドが発生すると、id とバージョンは、params オブジェクトに存在していても、常に null になります。

grails がオプティミスティック ロックを処理する方法に関連する id / version 属性の特別な処理があるのではないかと疑っていましたが (これが最終的に私がこれを行っている理由です)、ドメイン オブジェクトとは無関係にコマンド オブジェクトに問題が存在します。

なぜこれが機能しないのか、私は困惑しています。コマンドオブジェクトにバージョンが存在する特別なケースはありますか?

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

grails - Command Object と hasmany

commandObjectフォームを送信するときにを使用してデータを検証しようとしています。で hasMany リレーションを検証できますかcommandObject。私のシナリオはこんな感じです。

classeshasMany 関係を持つ単純な2 つの方法:

commandObjectフォームを送信するときに検証したい hasMany でシンプル。

Ps: この commandObject が間違っていることはわかっています。コンパイルできません。しかし、私はこのようなことをすることができますか???

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

grails - オブジェクトのリストを Grails コマンドに適切にバインドするにはどうすればよいですか?

JSONリクエストのネストされたオブジェクトをGrails 2.1.1コマンドオブジェクトにデシリアライズして検証する方法を見つけようとしています。

現在、コントローラーにいくつかの基本的なプロパティとドメイン オブジェクトのリストを持つコマンド オブジェクトがあります。

そして、私の POST リクエストへの JSON 本文、

空の配列で作成されたコマンド オブジェクトが表示されます。JSON本体のサブオブジェクトを取得してコマンドオブジェクトに逆シリアル化し、それらを検証する方法はありますか?

以前は、パラメーター マップからオブジェクトを手動で作成し、それを直接検証することでこの問題を回避していましたが、Grails が提供するすべてを利用していない回避策のように感じます。

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

grails - Grails 2.3.1 コントローラー・パラメーターでのコマンド・オブジェクトのデータ・バインディング

最近、grails 2.2 から 2.3.1 にアップグレードしました。私のコントローラーは、コントローラーパラメーターでデータをコマンドオブジェクトにバインドしていました。2.3.1 にアップグレードした後、バインドが機能していないようで、「[致命的なエラー] :-1:-1: ファイルの終わりが早すぎます。」コンソールに出力します。

この def home(ACommand cmd) {} のように 2.2 で正常に動作します。

アップグレード後、アクションに進む前に 'Premature end of file' を出力し、アクション メソッドをスキップして直接 home.gsp ビューに移動します。

また、アクション内で新しいインスタンスを試し、bindData(cmd, params) を使用しました。アクションをステップ実行すると、bindData メソッドは同じメッセージを生成しましたが、続行してビュー モデルを生成し、home.gsp に渡すことができます。

問題の原因を知っている人はいますか? ありがとう。

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

grails - Grails CommandObject がいつ失敗するかを検証する

私の Grails 2.2.3 アプリケーションには、次のコマンド オブジェクトがあります。

これにより、画像ファイルのアップロードが可能になり、有効なタイプのリストに含まれていることが保証されます。ただし、問題は、そのリストにないファイルをアップロードできることです。呼び出すとcmd.validate()gettrueを呼び出し、次に呼び出しcmd.hasErrors()て get を取得しますfalse'fileType.invalid'Stringと Listを返そうとしましたが['fileType.invalid']、どちらも機能しません。誰にもアイデアはありますか?ありがとう。

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

grails - Grails - コマンド オブジェクト専用のソース フォルダ?

私が読んだことによると、ほとんどの人はコマンドオブジェクトをコントローラー内に配置するか (私はこれが好きではありません)、src/groovy フォルダー内のどこかに配置します。

しかし、Grails がコントローラー、ドメイン、サービスなどの特定のフォルダーを持っている方法が好きで、コマンド オブジェクト用の新しいソース フォルダーを単純に作成するのは素晴らしいことだと考えていました。/grails-app/commands またはおそらく /src/commands のいずれかです。このように配置すると、コマンド オブジェクトの使用が促進されます。

これを行うと、特定のプロジェクト構造の規則に依存するいくつかの grails マジックが壊れる可能性があるのではないかと少し心配しています。いくつかの簡単なテストを実行した後、データ バインディングとドメイン制約のインポートがまだ正しく機能しているように見えることを確認しました。

このアプローチに対する考えや反論はありますか?

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

grails - Grails コマンド オブジェクトとページネーション

コマンドオブジェクトを使用するようにコントローラーの一部を更新しており、他のコマンドオブジェクトを拡張するために PaginateCommand を作成する道を歩み始めました。

サブコマンドクラス

コントローラ

これはすべてうまく機能し、コントローラーは素晴らしくシンプルになりました。現在の問題は、paginate タグが問題を引き起こしていることです。これは私が最初にうまくいくと思っていたものです:

ただし、paginate タグは、params 属性で渡されたものではなく、ほとんどの値のリクエストに添付された params のみを調べます。これらの変数は、合計などの属性として手動で渡す必要があります。

すべてのページネーション変数は、コマンド オブジェクトにバインドされると、リクエスト パラメータから削除されるようです (私が推測します)。これらの変数をコマンド オブジェクトに保持したいので、リクエスト パラメータをサービスに渡す必要はありません。レンダリングの前にコントローラーにパラメーターを再設定させることも、逆効果のようです。

paginate タグのすべての引数を入力する必要がありますか、それとも別の方法がありませんか?

PS私はGrails 2.3.6を使用しています