2009-05-26 98 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類型語句。