如何使用多个参数调用gsp中的onchange remoteFunction?

时间:2011-04-05 20:20:21

标签: grails onchange gsp

目标是更新"员工"同时为特定部门选择新经理。需要更新的属性属于前一个部门主管,因此需要前一个经理的记录ID。

如果你看下面的代码,&#34; this.value&#34;将正确地告诉我新选择的经理的记录ID(GSP中的下拉组合),但我似乎无法通过简单的$ {deptInstance?.manager?.id}将前一个经理的记录ID传递给ajax remoteFunction < / p>

他们之间的关系:员工--- 1:N ---&gt;部门

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')};">

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

唯一的问题是,一旦我使用$ {groupInstance?.manager?.id}而不是&#34; this.value&#34;对于oldmanager参数,那么我无法在控制器方法中收到任何内容&#34; managerMaintenance&#34;

有没有人知道如何在gsp remoteFunction调用中引用下拉组合的先前值?

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

非常感谢, 球

1 个答案:

答案 0 :(得分:2)

我怀疑你是否甚至需要通过oldmanager作为参数。

更简洁的方法是阅读以获取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')