Новый проект Grails 2.3.x. Im использует автогенерированный контроллер и представления для класса домена. Одно (не пустое) свойство, которое я хочу установить непосредственно в контроллере, поэтому я удалил поле ввода из _form.gsp.grails 2.3.x: Странное поведение с автогенерируемым контроллером
класс домена:
class Demo {
String demo
String status
static constraints = {
demo nullable: false
status nullable: false
}
В форме я только заполнить демо-поле.
автогенерируемые Результаты контроллера в:
...
@Transactional
def save(Demo demoInstance) {
if (demoInstance == null) {
notFound()
return
}
// set the status property to "test"
demoInstance.status = "test"
println "1 STATUS: ${demoInstance.status}"
if (demoInstance.hasErrors()) {
println "2 STATUS: ${demoInstance.status}"
respond demoInstance.errors, view: 'create'
return
}
println "3 STATUS: ${demoInstance.status}"
...
Заполните форму и оставьте свойство статус пустых результатов в
Println 1 -> статус = 'тест'
Println 2 -> статус = 'испытательную'
Перенаправление создать страницу с сообщением: «Свойство [состояние] класса [Demo] не может быть пустым»
Когда я изменить контроллер, как в Grails 2.2.x:
...
@Transactional
def save() {
def demoInstance = new Demo(params)
if (demoInstance == null) {
notFound()
return
}
// set the status property to "test"
demoInstance.status = "test"
println "1 STATUS: ${demoInstance.status}"
if (demoInstance.hasErrors()) {
println "2 STATUS: ${demoInstance.status}"
respond demoInstance.errors, view: 'create'
return
}
println "3 STATUS: ${demoInstance.status}"
...
В результате ожидаемого выхода:
Println 1 -> статус = 'тест'
Println 3 -> статус = 'тест'
И вход хранится в базе данных.
Может ли кто-нибудь объяснить это поведение? Благодарю.
Thx pereiss, "grails.databinding.useSpringBinder = true" решить мою проблему. – svema