如何获得模型中的参数?

问题描述:

如何获得模型中的参数(在Grails中)?模型中不存在params.如何获得模型中的参数?

+0

有几种方法可以在域对象中获取http参数,但所有这些方法都是黑客行为。你打算如何使用它以及为什么标准方式不适合你? – 2013-02-20 14:27:36

+0

我只是想避免将所有参数或每个我需要手动传递给模型/域模型。问题是:当你建立模型数据时,你经常需要params,并且在控制器中处理它们有时很烦人(即使它对MVC结构来说也是正确的)。 – Sliq 2013-02-20 14:32:38

+0

你可以将它作为一个对象传递,你不需要传递它们。为什么不? – 2013-02-20 14:35:04

如果按照“模型”你的意思是一个领域模型类,他们没有参数,他们只是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) 
    } 
}