私はクラスを持っています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
事前に保存されたプロパティのプロパティを出力すると、インスタンスはです。保存コードを次のように変更できますitemInstance
linkText
null
def 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つすべてと異なって扱っているのかわかりません。