Grails使用类型检查将数据绑定到非域类

时间:2016-06-05 13:57:11

标签: grails data-binding grails-3.0

我正在寻找一种简单的方法来检查我的参数中的某些类型。如果它们存在,它们应该具有某种类型,否则它们应该具有默认值。如果它们存在且类型错误,则应抛出异常。

之后将值放在方便的容器中会很不错。因此,我尝试将params传递给容器的构造函数,并将bindData传递给容器对象。两者都没有成功:

class ContainerClass {
     Integer foo = 42;
}

class TestController {

    def index(){
         //doesn't throw, **even when params.foo = "2asdf3"**
         ContainerClass meh = new ContainerClass();
         bindData(meh, params);

         println meh.foo //prints 42 when params.foo = "2asdf3"

         // throws GroovyCastException: Cannot cast object '23' with class
         // 'java.lang.String' to to class 'java.lang.Integer',
         // **even when params.foo = "23"**
         ContainerClass meh2 = new ContainerClass(params);
         render "meh"
    }
}

如果这很重要,我正在使用grails 3.

1 个答案:

答案 0 :(得分:1)

您可以使用命令对象将参数绑定到某些数据类型。 参考:http://docs.grails.org/latest/guide/single.html?utm_content=bufferf77f5&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer#commandObjects

如果要在某些数据类型不匹配时抛出异常,则需要明确检查。