2

OurCompanyというドメインオブジェクトがあり、ほとんどがnullでいっぱいの行を意図的に挿入できるようにしたいと思います。ただし、ユーザーがフォームに入力するときは、フォームを検証し、空白を許可しないようにします。

class OurCompany {

    static constraints = {        
        enterpriseName blank:false, nullable:true
    }

    String enterpriseName

    static belongsTo = [measurement:Measurement]

}

データベースに空の行を作成するとき、検証をオフにすると、正常に機能します。

ourCompany = new OurCompany();
measurement.addToOurCompany(ourCompany).save(validate:false);

後で行を更新すると、検証は無視され、null/空白の値があってもレコードが保存されます。

def ourCompany = loadOrCreateOurCompany();
def industrySectors = loadIndustrySectors();

bindData (ourCompany, params)

ourCompany.validate()
if (ourCompany.hasErrors()) {
    ourCompany.errors.allErrors.each {
        println(it)
    }
} else {            
    ourCompany.save();
}

DATABASEでnullを受け入れたいが、検証時にnullまたは空白を許可しないことをgrailsに伝えるにはどうすればよいですか?

4

2 に答える 2

4

それがコマンドオブジェクトの目的です

于 2012-12-13T20:54:13.043 に答える
0

解決策(これまでのところ)は本当に醜いです。grailsドメインプロパティをnull許容にし、CONSTRAINTを設定する方法はないようです。これを行う唯一の方法は、コマンドオブジェクトを使用して検証を行うことです。私の意見では、それは本当に非常に苦痛な解決策であり、かなりエレガントではなく、十分に文書化されていない方法論です。これは私の最も不快なgrailsの経験です。

于 2012-12-14T11:31:00.107 に答える