升级grails 2.2.1到2.3.6之后我遇到了下一个问题 我认为控制器中的任何Command对象都不起作用,例如: 我有这样的命令对象:
@ToString
@grails.validation.Validateable
class ListUserRoleCommand {
String userId
User getUser() { User.get(userId) }
static constraints = {
userId nullable: false
user nullable: false
}
}
我在UrlMapping.groovy中有条目:
"/user/$userId/role"(controller: "userRole", parseRequest: true) { action = [GET: "list", POST: "save"] }
那个shoud绑定请求:my-app / user / 4324gf54f4f34r3ff / role与控制器UserRoleController中的命令对象和'list'动作(我正在发送GET方法) 但我在userId上获得验证异常。
Field error in object 'pl.fissst.invoice.security.ListUserRoleCommand' on field 'userId': rejected value [null]
我打印到控制台的params,我有正确的数据:
params: [userId:ff808181458ff92401458ff94e150005, action:[GET:list, POST:save], controller:userRole, start:0, end:24, count:25, sort:[:], filter:[:]]
我检查了应用程序中的其他部分,我认为其他命令对象也不起作用。 我在Config.groovy中有这些条目:
grails.databinding.convertEmptyStringsToNull = false
grails.databinding.trimStrings = false
所以这不是空刺的问题。 有人可以帮忙吗?
EDIT1:
还有一个想法。如果我在Config.groovy中设置:
grails.databinding.useSpringBinder = false
应用程序启动几乎正常。现在只有一些命令不起作用。但是,如果我将grails.databinding.useSpringBinder设置为true,我认为任何命令对象都不会出错。
为什么部分命令对象停止工作?
EDIT2:
我注意到命令对象绑定了部分数据。 我也注意到,这个被绑定的数据部分来自后期数据,但这部分内容正在从网址中丢失(Urlmapping url params,如$ id)
EDIT3: 对于上述: 我在网上看,我找到了一些人们说的话:
来自Urlmapping的
parseRequest
在grils 2.3.x中不再起作用。真的吗 ?我该怎么处理?