如何获得模型中的参数?
答
如果按照“模型”你的意思是一个领域模型类,他们没有参数,他们只是POJO。就我所知,Params仅适用于控制器。
答
据我所知,你有一个从请求填充域的特殊方法。在这种情况下,你可以通过所有PARAMS(这是一个地图)这样的方法,如:
def MyDomain {
static MyDomain buildFromParams(def params) {
return new MyDomain(
field1: params.field_1, //assuming that your params have different naming scheme so you can't use standard way suggested by Raphael
field2: params.field_2
)
}
}
class MyController {
def myAction() {
MyDomain foo = MyDomain.buildFromParams(params)
}
}
答
如果你的参数名称propertly格式化并匹配域的属性,你可以这样做:
假设
params = [name:"some name", age: "194", civilState: "MARRIED"]
和
class Person{
String name
Integer age
CivilStatus civilState //some enum
}
您可以利用常规的属性绑定constructo r在控制器中如下所示:
class Controller {
def saveAction = {
new Person(params)
}
}
有几种方法可以在域对象中获取http参数,但所有这些方法都是黑客行为。你打算如何使用它以及为什么标准方式不适合你? – 2013-02-20 14:27:36
我只是想避免将所有参数或每个我需要手动传递给模型/域模型。问题是:当你建立模型数据时,你经常需要params,并且在控制器中处理它们有时很烦人(即使它对MVC结构来说也是正确的)。 – Sliq 2013-02-20 14:32:38
你可以将它作为一个对象传递,你不需要传递它们。为什么不? – 2013-02-20 14:35:04