как вызвать onchange remoteFunction в gsp с несколькими параметрами? - PullRequest
1 голос
/ 06 апреля 2011

Цель состоит в том, чтобы обновить свойство «персонала» при выборе нового менеджера для определенного отдела. Свойство, которое необходимо обновить, принадлежит предыдущему руководителю отдела, поэтому необходим идентификатор записи предыдущего менеджера.

Если вы посмотрите на приведенный ниже код, «this.value» правильно предоставит мне идентификатор записи вновь выбранного менеджера (выпадающий список в GSP), но я не могу передать идентификатор записи предыдущего менеджера с простой $ {deptInstance? .manager? .id} для удаленной функции ajax

отношения между ними: персонал --- 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')};">

Пока все хорошо, я получаю два параметра.

Единственная проблема заключается в том, что как только я использую $ {groupInstance? .Manager? .Id} вместо «this.value» для параметра oldmanager, я не могу получить ничего в методе контроллера «managerMaintenance»

У кого-нибудь есть идея, как сослаться на предыдущее значение раскрывающегося списка в вызове gsp remoteFunction?

Возможно, мой подход неверен, но я был бы признателен за любые замечания, касающиеся правильного синтаксиса GSP или возможного обходного пути для этого.

Большое спасибо заранее, Сфера

1 Ответ

2 голосов
/ 06 апреля 2011

Я спрашиваю, нужно ли вообще передавать 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')
...