2009-05-26 3 views
0

Что делает person.properties = params?Плагин Grails Acegi - PersonController.groovy - Пожалуйста, объясните!

+1

Это не должно быть wiki сообщества. –

+0

не могли бы вы объяснить, почему? – zotherstupidguy

+0

, потому что это простой вопрос с простым ответом, который со временем не потребует значительных изменений. – billjamesdev

ответ

2

Ну, короткий ответ заключается в том, что он соответствует любому ключу в карте params со свойствами объекта person, присваивая значение в карте params соответствующему свойству.

пример: предположим, что params.id = 156, а человек имеет свойство члена с именем id. После этого вызова person.id будет равен 156.

Некоторых примечаний:

  • Если есть ключи в Params, что не соответствуют свойствам лично, это нормально, это просто не будет делать все с этими.
  • Если есть объекты недвижимости, у которых нет ключей в параметрах? Также ок, он тоже пропустит их.
  • Это также очень похоже на создание нового человека через «новое Person (params)» или вызов «bindData (человек, параметры)».
0

Он обновляет значения свойств на объекте person, используя предоставленные параметры запроса. Это называется привязкой данных и документировано here.

1

Существует исчерпывающая документация на Grails web site

За кулисами, свойства на объекте Groovy/Grails является отображением свойств класса домена. Объект params также представляет собой карту параметров запроса - в основном параметры CGI объекта HttpServletRequest. Таким образом, назначение будет обновлять карту свойств со значениями из карты params, только там, где они совпадают.

Если вы должны были сделать это с прямыми сервлет & 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.

Смежные вопросы