0


Groovyクラスのプロパティにいくつかの一般的な制約(つまり、maxLength、nullable)を追加するにはどうすればよいですか?Grailsドメインクラスでそれを実行できることは知っていますが、それがGroovyクラスである場合は可能ですか(GrailsプロジェクトのDTOクラスとして使用しています)?
どうもありがとう!

4

3 に答える 3

6

コマンドクラスに制約を追加できます。コマンドクラスがコントローラーと同じ.groovyファイルにある場合(Groovyでは、各.groovyファイルに複数のパブリッククラスを含めることができます)、Grailsがコマンドクラスとして認識するために特別なことをする必要はありません。 。

ただし、コマンドクラスが別の場所(たとえば、src / groovyの下)にある場合は、コマンドクラスに注釈を付けて、のパラメーターに@Validateableパッケージ名を追加する必要があります。これは、コントローラーと同じファイルにないコマンドの例です。grails.validateable.packagesConfig.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プロパティで利用可能になります(ドメインクラスごとに)。

于 2011-05-05T08:37:13.940 に答える
1

grailsコマンドオブジェクトを使用するのがおそらく最善の策です。制約と検証がありますが、データベースの裏付けはありません。これは通常、コントローラーが使用する値オブジェクトですが、コントローラーの外部で問題なくインスタンス化できます。

于 2011-05-05T03:00:58.913 に答える
0

これがあなたの使用に関連しているかどうかはわかりませんが(私はDTOに精通していません)、現在のバージョン(2.3.8)では、抽象クラスにGrails制約を追加することもでき、それらは拡張するドメインによって継承されますそれ。あなたのIDEはそれを気に入らないかもしれません;)

于 2014-05-16T21:49:21.853 に答える