2016-02-05 54 views
1

假設我有Employee域類,我想從來自UI端的params地圖創建域類的對象。什麼是使用大量變量更新域類對象的最佳方法

我可以通過兩種方式創建對象如下

  1. 正常方式

員工員工=新員工(名稱:params.name,rollNo: params.rollNo)

等等。如果domain類有20個變量,那麼我們需要在上面的構造函數中寫入所有變量。

  • 以下是創建對象
  • 僱員僱員最佳方式=新員工(PARAMS)

    以上構造將填充對象與匹配PARAMS 。對。

    現在我的問題來到這裏。

    如果假設我有從DB中獲取的現有域類對象,現在我想從來自UI的PARAMS地圖更新此對象。 這樣做的最佳方法是什麼(就像我們在第二個選項中做的那樣)。

    +0

    我不會在同一時間設置很多字段。有人可以操縱他們的郵件信息,這是一個不在表格中填寫的更新字段。這將很難找到,找到並修復。只需設置正常的字段。但如果你在頁面上有20件事情,我會認爲這太多了...... –

    回答

    0

    我認爲最好使用命令對象並將其綁定到Employee。

    這裏是樣本僞代碼:

    class EmployeeMgmtController { 
        def editEmp(EmployeeCmd cmd){ 
         Employee editEmp = Employee.get(1) 
         editEmp.properties = cmd 
         editEmp.save() 
        } 
    } 
    
    class EmployeeCmd{ 
        String id 
    
        static constraints = { 
         id blank:false,nullable:false 
        } 
    } 
    

    ,或者

    你,如果你的控制器上,並仍想使用PARAMS(和排除您不想綁定任何字段):

    bindData(editEmp, params, [exclude:['firstName', 'lastName']]) 
    
    +0

    你不回答他的問題。他問的是更新,而不是創建對象。 –

    +0

    幾乎相同.. Thx爲發現。我編輯它。 – Quchie

    相關問題