私はクラスを持っていますItem:
class Item {
String title
String description
String linkText
String linkUrl
static constraints = {
title blank: false
description blank: false
linkText blank: false
linkUrl blank: false, url: true
}
Itemを使用して新しいインスタンスを保存しようとすると
def itemInstance = new Item(params)
itemInstance.save()
検証エラーが発生します:
Property [linkText] of class [class Item] cannot be null
これには2つの問題があります。
linkTextの形で、そこにあり<g:textField>ますname="linkText"。なぜ拘束されないのitemInstanceですか?の前にパラメータを出力するとsave()、を含むすべてが取得されますが、それらのパラメータから構築したときにlinkText事前に保存されたプロパティのプロパティを出力すると、インスタンスはです。保存コードを次のように変更できますitemInstancelinkTextnulldef itemInstance = new Item(params) itemInstance.linkText = params.linkTextそしてそれは問題なく保存され、使用されます
params.linkText。しかし、なぜ私はそれをしなければならないのですか?linkText予約キーワードか何か今ですか?(私が知っているのは、2008年ではなかったということだけです。)「空白」ではなく「null許容」エラーが発生するのはなぜですか?それらは異なるエラーです。これに関するカスタムメッセージがありますが
messages.properties、Grailsが現在それを使用したくない場合でも、default.blank.message(“ <code> Property [{0}] of class [{1}]空白にすることはできません」)。
そのリストの1番が私にとって最も懸念されていますが、そもそもなぜGrailsがこの分野をStringsクラスの他の3つすべてと異なって扱っているのかわかりません。