問題タブ [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.
grails - ドメイン クラスの Grails カスタム バリデーター
ConfigurationHolder.config.support.reminder.web.person.max
私には制限があるので、保存されているオブジェクト以上のものはありません
。特定のプロパティに関連しないバリデーターを追加する方法が見つかりませんでした。ということで、とりあえずこんな感じで実装。それをより良くする方法はありますか?
grails - Grails でデフォルトのエラー メッセージをオーバーライドするにはどうすればよいですか?
lastName フィールドを持つ Person オブジェクトがあります。lastName フィールドを空白にすることはできません。ユーザーがフォームの lastName フィールドに空白の値を送信すると、次のエラー メッセージが表示されます。
このエラー メッセージは不親切です。「姓フィールドを空白にすることはできません」のように、よりユーザーフレンドリーなものにカスタマイズしたい
それ、どうやったら出来るの?
grails - Grails: プロパティ Null エラー
いくつかのプロパティを持つ Modulo というドメインと、モデルからオブジェクトを作成して保存するメソッドを持つコントローラーがあります。シェルを実行すると、次のエラーが表示されます。
- La propiedad [{0}] de la clase [{1}] no puede ser nulo
しかし、nullable 制約を true に設定すると、エラーが再び表示されます。私はこのcosntraintを設定すべきではないと思います。
モデルは、id allow null を除くすべてのプロパティを持つ mysql テーブルにリンクされています。
私はここで何か間違ったことをしていないと思います。何かアドバイス??
ドメイン: モジュロ
コントローラ: 例
ありがとう。ホセ
ruby-on-rails - 検証に合格しない理由
Rails3アプリを開発しています。
「 Cake」モデルの「size」属性入力フィールドを検証して、ユーザーが+ 1、-1、+ 10、-10および+ 25、-25のみを入力できるようにします。
次の検証を使用して「サイズ」を検証します。
(私のデータベースの「cakes」テーブルの「size」属性は「double」タイプです。)
UIでは、1、10、25、+ 1などを入力しても、常に検証の失敗メッセージが表示されます。値が正しい場合でも検証に合格しないのはなぜですか?
grails - Grails formRemote - マルチフォームでのリダイレクトを回避するには?
Screening という名前のマスター コントローラーがあります。このコントローラーのビューワークフローを構築しました(例:作成、編集、リスト、表示)。
私の編集ビューでは、Jquery TABS を使用しています (各タブは、ドメインに関連付けられたテンプレートからコンテンツを取得します)。要約すると:
したがって、私の Screening 編集ビューでは、formRemote を使用してテンプレート パーツを追加しています。例:
スクリーニング ビューで検証/保存を維持したいのですが、どうすればこれを処理できますか?
実際、ユーザーが保存を試みた場合 (または検証が失敗した場合)、ユーザーは demographics controller/view にリダイレクトされます。これを回避するには?ユーザーをリダイレクトしたくありません。
1 つのコントローラー/ドメインで (テンプレート/ドメインの関連付けを使用して) マルチフォームを処理する最良の方法はありますか?
grails - GrailsコマンドとしてJavaクラスを使用する
Grailsコントローラーのコマンドクラスとして使用したいJavaクラスがたくさんあります。典型的な例は次のとおりです。
このクラスを呼び出すことができるように、このクラスの制約を指定できるようにしたいと思います。validate()
検証エラーがあれば、プロパティに格納されerrors
ます。つまり、通常のGrailsコマンドクラスと同じように動作します。
明らかに、Javaはクロージャをサポートしていないため、.javaソースファイルで制約クロージャを直接宣言することはできません。これらのクラスを(実行時に)変更して、Grailsコマンドの動作を追加する方法はありますか?
grails - カスタム Grails 検証
通常、Grails ドメインまたはコマンド クラスでは、制約を宣言すると、フレームワークは、validate()
これらの各制約が現在のインスタンスに対して有効かどうかをチェックするメソッドを追加します。
preValidate
私の場合、クラスが検証される前に常に実行されるようにしたいと考えています。メソッドを追加することでこれを達成できました
customValidate
しかし、このクラスを使用するすべての人は、の代わりにを呼び出すことを覚えておく必要がありvalidate
ます。これもできない
validate
親クラスのメソッドではないためです(メタプログラミングによって追加されます)。私の目標を達成する別の方法はありますか?
grails - Grails フォームのエラー処理: バインディング 1:1 オブジェクト マッピング
2 つのドメイン オブジェクトに関連するフィールドを含む登録フォームがあります。ユーザーとプロファイル。この関係は、User ドメイン クラスが所有する 1:1 のマッピングです。
ユーザー コントローラーの「登録」アクションは、フォームの値をマーシャリングし、検証エラーがなければユーザー オブジェクトを保持し、フォームが送信されるとアプリケーション ルートにリダイレクトします。それ以外の場合、コントローラーは失敗した値が事前入力されたフィールドを示す登録フォームにリダイレクトします。
ただし、実際には、検証が失敗した場合、失敗した値はビューに表示されません。以下は、登録アクションのコードです。
以下は、ユーザーおよびプロファイル関連のフィールドを示すビューからの HTML の抜粋の例です。
構文的には、すべて問題ないように見えます。値にアクセスするために適切な命名規則とグレイルの補間を使用しているので、これが期待どおりに動作しない理由については、私は機知に富んでいます。
コメントや提案をいただければ幸いです。
ありがとう、トム
grails - 他の属性に依存するGrails検証
grailsでこのようなことをする正しい方法は何ですか:
したがって、otherDomainThingへのリンクがあるか、文字列の説明が必要です。
grails - 同様の名前のクラスでの ConversionNotSupportedException
更新: クラスなどに関するいくつかの間違った仮定を作成しました。「デモ」プロジェクトがある場合、次のことが発生します。
「Company」という名前の 2 つのクラスがあります。
- 1 つは grails-app/domain/my.classes.domain.Company に配置されます
- もう 1 つは src/groovy/my.clazz.Company にあります。
最後のものには @Validateable アノテーションがあり、Config.groovy には grails.validateable.packages = ['my.clazz'] が含まれています
また、grails-app/domain/my.classes.domain.Account に Account クラスがあります。
package my.classes.domain
import java.io.Serializable;
class Account implements Serializable { Company company }
次に、次のコードを (bootstrap.groovy で) 使用します。
このアプリを実行すると、次のエラーが表示されます。
すべてがうまくいっているように見えるので、これは非常に奇妙な例外です。一部のテストでは、次の「ヒント」が証明されました。 config.groovy を変更してクラスに明示的に名前を付ける (つまり、grails.validateable.classes = ['my.classes.domain.Company'] を使用する) と、このエラーは発生しません。このエラーアカウントの会社のプロパティを別の名前に変更した場合 (およびそれに応じてブートストラップを変更した場合) は発生しません。
ただし、これらは回避策です。なぜこれが起こっているのか、私は本当に興味があります。誰か手がかりを得ましたか?
安全のために、この問題を作成するために次のことを行いました。
- ドメイン クラスを作成します: my.classes.domain.Company
- ドメインクラスを作成します: my.classes.domain.Account
- 上記のようにドメインクラスを変更します
- グルーヴィーなクラスを作成します: my.clazz.Company
- このグルーヴィーなクラスに Validatable アノテーションを付与してください。
- my.clazz パッケージを検証可能なパッケージに追加します
- ブートストラップで、新しいアカウント (会社:会社) で新しいアカウントを作成します。