Grails Acegi插件-PersonController.groovy-请解释!

Grails Acegi插件-PersonController.groovy-请解释!,grails,Grails,person.properties=params做什么?简单的回答是,它将params映射中的任何键与person对象的属性相匹配,将params映射中的值分配给匹配的属性 示例:假设params.id=156,person有一个名为id的成员属性。在这个调用之后,person.id将等于156 一些注意事项: 如果参数中有键 不亲自匹配属性, 没关系,它什么也做不了 用那些 如果有个人属性在参数中没有键?阿尔索 好的,它也会跳过这些 这也非常类似于通过“新建”创建一个新人 人员(参数)“或呼

person.properties=params做什么?

简单的回答是,它将params映射中的任何键与person对象的属性相匹配,将params映射中的值分配给匹配的属性

示例:假设params.id=156,person有一个名为id的成员属性。在这个调用之后,person.id将等于156

一些注意事项:

  • 如果参数中有键 不亲自匹配属性, 没关系,它什么也做不了 用那些
  • 如果有个人属性在参数中没有键?阿尔索 好的,它也会跳过这些
  • 这也非常类似于通过“新建”创建一个新人 人员(参数)“或呼叫 “bindData(个人,参数)”

简而言之,它将参数映射中的任何键与person对象的属性相匹配,将参数映射中的值指定给匹配的属性

示例:假设params.id=156,person有一个名为id的成员属性。在这个调用之后,person.id将等于156

一些注意事项:

  • 如果参数中有键 不亲自匹配属性, 没关系,它什么也做不了 用那些
  • 如果有个人属性在参数中没有键?阿尔索 好的,它也会跳过这些
  • 这也非常类似于通过“新建”创建一个新人 人员(参数)“或呼叫 “bindData(个人,参数)”

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

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

在幕后,Groovy/Grails对象上的属性是域类属性的映射。params对象也是请求参数的映射-基本上是HttpServletRequest对象CGI参数。因此,赋值将使用参数映射中的值更新属性映射,仅在它们匹配的地方

如果您使用纯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类型语句。

关于

在幕后,Groovy/Grails对象上的属性是域类属性的映射。params对象也是请求参数的映射-基本上是HttpServletRequest对象CGI参数。因此,赋值将使用参数映射中的值更新属性映射,仅在它们匹配的地方

如果您使用纯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类型语句。

这不应该是一个社区wiki。因为这是一个简单的问题,答案简单,不需要随着时间的推移进行太多修改。这不应该是一个社区wiki。因为这是一个简单的问题,答案简单,随着时间的推移,这不需要太多修改。