Grails2.3.1控制器参数处的命令对象数据绑定

Grails2.3.1控制器参数处的命令对象数据绑定,grails,data-binding,command-objects,Grails,Data Binding,Command Objects,我最近从Grails2.2升级到了2.3.1。我的控制器用于在控制器参数处将数据绑定到命令对象。升级到2.3.1后,绑定似乎不起作用,并将“[致命错误]:-1:-1:文件过早结束。”输出到控制台 它在2.2下工作得很好,就像这样 def home(ACommand cmd){} 升级后,它会在执行操作之前输出“文件过早结束”,并跳过操作方法,直接转到home.gsp视图 我还尝试在操作中创建一个新实例,并使用bindData(cmd,params)。当我单步执行该操作时,bindData方法生成

我最近从Grails2.2升级到了2.3.1。我的控制器用于在控制器参数处将数据绑定到命令对象。升级到2.3.1后,绑定似乎不起作用,并将“[致命错误]:-1:-1:文件过早结束。”输出到控制台

它在2.2下工作得很好,就像这样 def home(ACommand cmd){}

升级后,它会在执行操作之前输出“文件过早结束”,并跳过操作方法,直接转到home.gsp视图

我还尝试在操作中创建一个新实例,并使用bindData(cmd,params)。当我单步执行该操作时,bindData方法生成了相同的消息,但可以继续生成视图模型并传递到home.gsp


有人知道问题的原因吗?谢谢

Grails2.3包含了一个新的数据绑定机制,该机制具有额外的特性。如果需要访问旧式spring数据绑定机制,请在
Config.groovy

grails.databinding.useSpringBinder=true

最终,如果您觉得需要使用,则需要过渡到使用。

谢谢dmahapatro。我以前试过,但不起作用

仅供参考,我通过在Config.groovy上重新安排内容协商解决了这个问题

mime.types = [ xml: ['text/xml', 'application/xml'],
        text: 'text/plain',
        js: 'text/javascript',
        rss: 'application/rss+xml',
        atom: 'application/atom+xml',
        css: 'text/css',
        csv: 'text/csv',
        all: '*/*',
        json: 'text/json',
        html: ['text/html','application/xhtml+xml']
]

解决了这个问题

不确定顺序为何重要,但我认为这是由Grails2.3数据绑定造成的,它试图解析请求体并绑定到我的命令对象,从而导致xml解析器错误

mime.types = [
        all:           '*/*',
        atom:          'application/atom+xml',
        css:           'text/css',
        csv:           'text/csv',
        form:          'application/x-www-form-urlencoded',
        html:          ['text/html','application/xhtml+xml'],
        js:            'text/javascript',
        json:          ['application/json', 'text/json'],
        multipartForm: 'multipart/form-data',
        rss:           'application/rss+xml',
        text:          'text/plain',
        hal:           ['application/hal+json','application/hal+xml'],
        xml:           ['text/xml', 'application/xml']
]