2011-04-05 65 views
1

目标是在为特定部门选择新经理的同时更新“员工”的财产。需要更新的属性属于前一个部门负责人,因此需要前任经理的记录编号。如何使用多个参数在gsp中调用onchange remoteFunction?

如果你看看下面的代码,“this.value”会正确地提供我新选择的管理者的记录ID(GSP中的下拉组合),但我似乎无法将前一个管理者的记录ID与一个简单的$ {deptInstance .manager .ID?}到AJAX remoteFunction

它们之间的关系:员工--- 1:N --->部门

代码片段在GSP:

<g:select 
    name="manager.id" 
    from="${Staff.list()}" 
    optionKey="id" 
    value="${deptInstance?.manager?.id}" 
    onchange="${remoteFunction(action:'managerMaintenance', params:'\'oldmanager=\' + this.value + \'&newmanager=\' + this.value')};"> 

到目前为止好,我得到了两个参数。

唯一的问题是,一旦我使用$ {?.manager?.ID groupInstance},而不是“THIS.VALUE”为oldmanager参数,那么我不能在控制器方法得到了什么“managerMaintenance”

不任何人有一个想法如何引用gsp remoteFunction调用中的下拉组合的以前的值?

也许我的方法是错误的,但我希望任何有关正确的GSP语法的输入或可能的解决方法。

提前许多感谢, 球

回答

2

我的问题,如果你甚至需要通过oldmanager都为PARAM。

更清晰的方法是在控制器的managerMaintenance控制器操作中读取以获取管理器的先前值。

例GSP:

<g:select 
... 
onchange="${remoteFunction(action:'managerMaintenance', id:deptInstance?.id, params:[manager.id:this.value])}"> 

示例控制器:

def managerMaintenance = { 
    def deptInstance = Department.get(params.id) 

    def oldManager = defInstance.manager 

    deptInstance.properties = params 

    def newManager = defInstance.manager 
} 

当然,还有,如果你需要它太这个漂亮的把戏......

domainInstance.getPersistentValue('propertyName') 
相关问题