2009-05-26 84 views

回答

2

嗯,简短的回答是,它将PARAMS地图中的任何键与person对象的属性相匹配,并将PARAMS地图中的值赋予匹配的属性。

示例:假设params.id = 156,并且person有一个名为id的成员属性。这个电话后,person.id将等于156

一些注意事项:

  • 如果有PARAMS关键在于 不匹配的人, 没关系性质,它只是不会做什么 与那些。
  • 如果有属性没有在params中有键吗?还有 好的,它也会跳过这些。
  • 这也是非常相似,通过“新 人(PARAMS)”创建一个新的人物或致电 “bindData(人,则params)”。
0

它使用提供的请求参数更新person对象上的属性值。这称为数据绑定,并记录在here

1

上有Grails web site

在幕后全面的文档,一个Groovy/Grails的对象的属性是一个地图域类属性。 params对象也是请求参数的映射 - 基本上是HttpServletRequest对象的CGI参数。因此,分配将使用params地图中的值更新属性地图,只在匹配的地方。

如果你是直servlet来做到这一点& JSP的你就基本上可以写:

public void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    Person person = new Person(); 
    person.firstName = request.getParameter('firstname'); 
    person.lastName = request.getParameter('lastname'); 
    person.password = request.getParameter('password'); 
    ... 
} 

Grails中,你会本质上只是写在PersonController.groovy:

def save = { 
     def person = new Person() 
     person.properties = params 
     ... 
    } 

所以使用Grails,您不必过多担心参数名称是什么,因为您应该使用grails标签输出它们,然后使用params映射将其返回到对象中。这可以减少错误参数名称时遇到的愚蠢错误。

您还可以将更多属性添加到Person域对象,而不必编写更多的getter/setter类型语句。