Grails在2.2.1升级到2.3.6后运行app命令对象不工作
在将Grails2.2.1升级到2.3.6之后,我遇到了下一个问题 我认为控制器中的任何命令对象都不工作,例如: 我有这样的命令对象:Grails在2.2.1升级到2.3.6后运行app命令对象不工作,grails,grails-controller,Grails,Grails Controller,在将Grails2.2.1升级到2.3.6之后,我遇到了下一个问题 我认为控制器中的任何命令对象都不工作,例如: 我有这样的命令对象: @ToString @grails.validation.Validateable class ListUserRoleCommand { String userId User getUser() { User.get(userId) } static constraints = { userId nullable: f
@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"] }
应该绑定请求:我的app/user/4324gf54f4f34r3ff/role和controller UserRoleController中的command对象以及“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
grails.databinding.useSpringBinder = false
所以这不是空刺的问题。
有人能帮忙吗
编辑1:
再想想。如果我在Config.groovy中设置:
grails.databinding.convertEmptyStringsToNull = false
grails.databinding.trimStrings = false
grails.databinding.useSpringBinder = false
应用程序启动几乎正常。现在只有一些命令不起作用。但如果我将grails.databinding.useSpringBinder设置为true,我认为任何命令对象都不是wok
为什么部分命令对象停止工作
编辑2:
我注意到命令对象绑定了部分数据。
我也注意到,绑定的这部分数据是从post数据提交的,但提交的这部分数据是从url中丢失的(url映射url参数,如$id)
编辑3:
对于上述内容:
我在网上看到一些帖子,人们说:
parseRequest
从Urlmapping在GRILS2.3.x中不再起作用。这是真的吗?我该怎么处理呢?我无法重现您所描述的内容。在我刚刚创建的一个示例应用程序中,所有这些都可以正常工作。如果您在提交JIRA并附加一个简单的示例应用程序,我们将进行查看。