我正在寻找一种简单的方法来检查我的参数中的某些类型。如果它们存在,它们应该具有某种类型,否则它们应该具有默认值。如果它们存在且类型错误,则应抛出异常。
之后将值放在方便的容器中会很不错。因此,我尝试将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.
答案 0 :(得分:1)
您可以使用命令对象将参数绑定到某些数据类型。 参考:http://docs.grails.org/latest/guide/single.html?utm_content=bufferf77f5&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer#commandObjects
如果要在某些数据类型不匹配时抛出异常,则需要明确检查。