2015-10-20 32 views
0

我有2個方法,得到同樣的PARAMS:Grails的invokeMethod中不起作用

void removeJob(def user,def company,String job){} 
void addJob(def user,def company,String job){} 

我想使用的InvokeMethod(),但我不知道怎麼樣。 我嘗試:

def methodName = selectedChange[2]=='true'?'add':'remove' 
roleService.invokeMethod(methodName+'Job',[userSelected,  selectedCompany,selectedChange[1]]) 

但我得到的錯誤

回答

1

可以調用動態使用GString的方法名稱的方法:

String methodName = selectedChange[2] == 'true' ? 'add' : 'remove' 
roleService."${methodName + 'Job'}"(userSelected, selectedCompany, selectedChange[1]) 

這也適用於性能,例如

String propertyName = 'fooCount' 
int count = person."$propertyName"