Groovyクラスのプロパティにいくつかの一般的な制約(つまり、maxLength、nullable)を追加するにはどうすればよいですか?Grailsドメインクラスでそれを実行できることは知っていますが、それがGroovyクラスである場合は可能ですか(GrailsプロジェクトのDTOクラスとして使用しています)?
どうもありがとう!
3 に答える
コマンドクラスに制約を追加できます。コマンドクラスがコントローラーと同じ.groovyファイルにある場合(Groovyでは、各.groovyファイルに複数のパブリッククラスを含めることができます)、Grailsがコマンドクラスとして認識するために特別なことをする必要はありません。 。
ただし、コマンドクラスが別の場所(たとえば、src / groovyの下)にある場合は、コマンドクラスに注釈を付けて、のパラメーターに@Validateable
パッケージ名を追加する必要があります。これは、コントローラーと同じファイルにないコマンドの例です。grails.validateable.packages
Config.groovy
pacakge com.example.command
@Validateable
class Person {
Integer age
String name
static constraints = {
name(blank: false)
age(size 0..100)
}
}
以下を追加しますConfig.groovy
grails.validateable.packages = ['com.example.command']
コマンドクラスには、validate()
Grailsによって追加されたメソッドがあります。このメソッドが呼び出された後、エラーはerrors
プロパティで利用可能になります(ドメインクラスごとに)。
grailsコマンドオブジェクトを使用するのがおそらく最善の策です。制約と検証がありますが、データベースの裏付けはありません。これは通常、コントローラーが使用する値オブジェクトですが、コントローラーの外部で問題なくインスタンス化できます。
これがあなたの使用に関連しているかどうかはわかりませんが(私はDTOに精通していません)、現在のバージョン(2.3.8)では、抽象クラスにGrails制約を追加することもでき、それらは拡張するドメインによって継承されますそれ。あなたのIDEはそれを気に入らないかもしれません;)