2011-04-05 5 views
1

목표는 "staff"속성을 업데이트하면서 특정 부서의 새 관리자를 선택하는 것입니다. 업데이트해야 할 속성은 이전 부서장에 속하므로 이전 관리자의 레코드 ID가 필요합니다.gsp에서 여러 매개 변수로 onchange remoteFunction을 호출하는 방법은 무엇입니까?

아래 코드를 보면 "this.value"가 새로 선택한 관리자 (GSP의 드롭 다운 콤보)의 레코드 ID를 정확하게 전달하지만 이전 관리자의 레코드 ID를 전달할 수없는 것으로 보입니다. 간단한 $ {deptInstance .manager .ID?} 아약스 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')};"> 

지금까지 그렇게 좋았습니다. 두 매개 변수를 얻었습니다.

만 문제는 {groupInstance? .manager? .ID} 대신 $를 사용하면 "this.value"는 oldmanager 매개 변수에 대해 다음 나는 컨트롤러 방법 "managerMaintenance"

합니까 아무것도받을 수 없다는 것입니다 누구나 gsp remoteFunction 호출에서 드롭 다운 콤보의 이전 값을 참조하는 방법을 알고 있습니까?

어쩌면 내 접근 방식이 잘못되었지만 적절한 GSP 구문 또는 가능한 해결 방법에 관한 정보를 제공해 주시면 감사하겠습니다. 당신은 심지어 PARAM으로 모든 oldmanager을 통과해야하는 경우 사전에

많은 감사, 영역은

답변

2

나는 질문.

더 깨끗한 접근법은 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') 
관련 문제