Grails 2.3.1控制器参数的命令对象数据绑定

时间:2013-11-07 04:55:35

标签: grails data-binding command-objects

我最近从grails 2.2升级到2.3.1。我的控制器用于将数据绑定到控制器参数的命令对象。在我升级到2.3.1之后,绑定似乎无法正常工作并且有'[致命错误]:-1:-1:文件过早结束。输出到控制台。

它在2.2这样正常工作 def home(ACommand cmd){}

升级后,在进入操作之前输出“文件过早结束”并跳过操作方法直接进入home.gsp视图。

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

有没有人碰巧知道可能导致问题的原因?谢谢。

2 个答案:

答案 0 :(得分:1)

Grails 2.3包含一个新的数据绑定机制,它具有其他功能。如果您需要访问旧版弹簧数据绑定机制,请在Config.groovy

中使用此配置
grails.databinding.useSpringBinder=true

最后,如果您认为需要使用latest data binder,则需要转换以使用new features

答案 1 :(得分:0)

感谢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']
]

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']
]

解决问题。

不确定订单为何重要,但我认为这是由Grails 2.3数据绑定导致解析请求主体并绑定到我的命令对象并导致xml解析器错误。