2016-02-05 124 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

    相关问题