2013-12-18 54 views
0

當我生成一個名爲User域類控制器我得到這個代碼的編輯操作:Grails控制器編輯返回地圖?

def edit(Long id) { 
    def userInstance = User.get(id) 
    if (!userInstance) { 
     flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), id]) 
     redirect(action: "list") 
     return 
    } 

    [userInstance: userInstance] 
} 

是否有人可以解釋爲什麼這將返回[userInstance: userInstance],而只是感謝userInstance

謝謝!

回答

1

控制器返回包含您將(視爲)在您的視圖中使用的數據的地圖。地圖關鍵字是您在視圖中用於此數據的名稱。如果你重新命名了地圖鍵,也許會少一些混淆,例如

def edit(Long id) { 
    def userInstance = User.get(id) 
    if (!userInstance) { 
     flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), id]) 
     redirect(action: "list") 
     return 
    } 

    [user: userInstance] 
} 

要獲得視圖中的User的ID,你可以使用:

${user.id} 
+0

好了,所以當你命名鍵爲userInstance,它不看參考userInstance財產,但是當您使用userInstance作爲VALUE時,它會引用該屬性? 謝謝! – AnthonyM

+0

@ oxym0r0n地圖中的數據總是通過地圖的關鍵名稱在視圖中檢索到。用作映射值的變量的名稱沒有區別 –