問題タブ [grails-validation]
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.
mysql - Grails:バリデーターを作成のみに適用させることはできますか(更新/編集ではありません)
いずれかのフィールドで作成された日の翌日を指定する必要があるドメインクラスがあります。
したがって、数日後、文字列のみを変更してsaveを呼び出すと、バリデーターが日付を再チェックしていて、現在は過去であるため、保存が失敗します。バリデーターを作成時にのみ起動するように設定できますか、それとも作成中か編集/更新中かを検出するようにバリデーターを変更する方法はありますか?
@RobHあなたの答えの使い方がよくわかりません。このエラーの原因となる次のコードがあります。
grails - grailsでXMLユーザーファイルを使用して認証を行う方法は?
grails の初心者なので、XML ユーザー ファイルを使用してユーザーを認証する方法を知りたいですか? 例: ユーザーは、資格情報 (ユーザー名とパスワード) が XML ファイルの資格情報と一致する場合にのみログインできます。誰でも簡単な例を挙げて助けてください。基本的に、どの追加クラスを作成するか、または変更が必要かを知りたいです。ガイドしてください!!!
grails - Grails: サービス内のデータ バインディングによって行われる関連付けのロールバック
次の 2 つのドメイン クラスがあるとします。
サービスでドメイン オブジェクトを作成して保持し、Grails のデータ バインディング機能を利用します。このようなメソッドは次のようになります。
params
地図を渡すと
service メソッド (タイトルが定義されていないため、検証は失敗します) に対して、新しく作成された書籍から既存の著者への関連付け (およびその逆) は、データ バインディングによって行われます。ただし、タイトルがnullable: false
定義されていないため、 aValidationException
がスローされ、トランザクションがロールバックされます。
ここで予想していたのは、書籍が保存されていないことですが、Book.list().isEmpty()
false が返されます。これは、休止状態によるダーティ チェックが原因であると考えられます。つまりbooks
、既存のコレクションauthor
が変更されて永続化され、この保存が book インスタンスにカスケードされます。
このシナリオで grails が本を保存しないようにする最善の方法は何ですか? または、検証が失敗したときに、データ バインディングによって行われた関連付けが適切にロールバックされないのはなぜですか?
grails - 属性値を交換した後、Grails 固有のテストが失敗する
こんにちは、単純な翻訳リストを実装しようとしています。つまり、値とこの値への翻訳があります。
[編集:] これは私のユーザー インターフェースの一部であり、値と翻訳は xml 経由でエクスポート可能であるため、i18n ファイルの継ぎ目を使用すると、この命題にはかなり不便です。そのため、それらをデータベースに保存することにしました。
値に対して 1 つのドメイン クラスがあります。
1 つの値に対して、特定の言語に対して複数の翻訳が存在してはならないことを保証する一意の制約を持つ翻訳用の 1 つ:
私の問題は、同じ値に対して 2 つの翻訳言語を交換した後に発生します。例:
プリントアウト
したがって、更新の前後で一意の制約に違反することはありませんが、とにかく保存中に一意の制約に失敗します。もう1つの奇妙なことは、値に対して each() ループを実行したときにのみこのエラーが発生することです。内容を検査しないと、検証はパスし、save(flush:true) メソッドは true を返しますが、値はデータベースで変更されません。
[編集:] 1 つの値のみが変更され、もう 1 つの値が変更されていない場合、問題はデータベース レベルにあると思います。まさにその状態で制約に違反しているためです。代わりに変更がトランザクションとして実行され、この中間ステップで制約がチェックされない場合、これを回避できます。(これは私が探しているものかもしれません)
これを回避する別の方法は、編集されたすべての Bean を削除して再作成することですが、これを行うためのより便利な方法があることを望んでいました。
助けてくれてありがとう
grails - 一意の属性値を交換した後、Grails の検証が失敗する
一意の属性値を交換した後、Grails の検証が失敗する
こんにちは、ユーザーがさまざまな言語の翻訳を使用してカスタム列挙を作成できるインターフェイスを作成しようとしています。たとえば、ユーザーは「映画のジャンル」という列挙を作成できます。この列挙には、複数の言語用に 1 つ以上の列挙値翻訳が存在する可能性がある列挙値「Comedy」が存在する可能性があります。
特定の言語の翻訳は 1 つだけである必要があるため、enumeration-value-translation ドメイン クラスに一意の制約を追加しました。これらは現在私のドメインクラスです:
これはこれまでのところかなりうまくいきます。言語が入れ替わる方法で同じ列挙値の 2 つの列挙値翻訳を更新すると、問題が発生します。たとえば、私は
- 列挙値: 「コメディ」
言語が「偶然に」混同されているいくつかの翻訳
- コメディー
- 言語: ドイツ語、値: "コメディ"
- 言語: 英語、値 "Komödie"
ユーザーが言語を混同したことに気付いた場合、言語を交換して列挙を再度保存することをお勧めします。そして、これが私のエラーが発生する場所です。言語を交換した後、enumeration-value-translations の一意の制約が false に検証されるためです。
これをデバッグするために、パラメータを処理する前後に翻訳を引き起こすエラーを出力しようとしました。
結果は次のとおりです。
この状態で、私は何かを削除または保存 (または何らかの方法でフラッシュ) しました。これは、オブジェクトを変更した後の結果です。ご覧のとおり、実際のデータに矛盾はなく、検証が失敗することはありません。
翻訳を変更する方法に間違いがあるのでしょうか? IDでそれらをフェッチし、言語を更新しただけです-最小限の例で試してみたところ、そこで機能しました...すべての列挙値と列挙値の翻訳のディープコピーを作成して保存するだけでも機能します代わりに(つまり、検証が実際に失敗するべきではないことを意味します)、しかし、これは実際に行うべき方法ではないと思います...
もう 1 つの奇妙な点は、データを反復処理した場合にのみ検証が失敗することです。データにまったく触れない場合、エラーは発生しませんが、データも保存されません。つまり、次の行によって検証がまったく評価されます。
だからこそ、重要な問題があるに違いないと強く信じています...他に知っておくべきことがあれば教えてください。
助けてくれてありがとう
service - サービス メソッドからの Grails 検証エラー
オブジェクトを作成するサービス クラスにメソッドがあります。
これらのプロパティはどちらも null 許容ではありません。検証エラーを返して表示するにはどうすればよいですか? flash.message と render を試しましたが、どちらもサービス クラス内からは機能しません。エラーの長いリストを表示する .save(failOnError:true) も試しました。
grails - Grailsはドメインバリデーターからセッション変数を取得します
これは一般的なシナリオだと思いますが、答えは見つかりませんでした。現在サインインしているユーザーを保持するセッションスコープの変数があり、ドメインオブジェクトのカスタムバリデーターを使用して条件付き検証を実行する必要があります。バリデーターにいる間にセッションスコープから現在のユーザーを取得する方法はありますか、またはバリデーターから特定のフィールドのエラーを返すことができるようにしたいことを念頭に置いて、これを行う別の方法がありますか?if(isBlank(it))return ['blank','summary',Presentation];
)。
基本的な構造:
grails - タブ内に2つのドメインがあります
私はグライルに慣れていないので、このような質問をして本当に申し訳ありません。
私は3つのクラスを持っています、
Persona
に拡張しpersonaFisica
、personaJuridica
次のディレクトリ内に、タブと2つの送信ボタンを備えたGSPを作成しました
私が知りたいのは、ユーザーがフィールドに入力したタブに応じて、どちらかのドメインを保存する方法です。
grails - Grails カスタムバリデーターに引数を渡す
http://www.grails.org/doc/latest/ref/Constraints/validator.html
SMS メッセージで提供した一時パスワードを使用してユーザーにログインしてもらいたいプロジェクトがあります。したがって、ログイン時にカスタムバリデータを使用して、Java クラスを使用して作成したパスワードと照合したいと考えています。