2013-10-27 96 views
0

getStarted動作重定向到companyInfo動作使頁面呈現後立即呈現companyInfo.gsp,並且動作再次被調用一次。我不明白是什麼問題?請幫我理解它。Grails動作被調用兩次

class MyController { 
    @Secured('ROLE_USER') 
    def getStarted(){ 
     def renderParams = [view: 'getStarted', model: [:]] 
     if(request.method != 'POST') { 
      render(view: 'getStarted') 
     } else { 
      def company = new Company() 
      ....... 
      redirect(action: 'companyInfo', params: [id: company.id]) 
     } 
    } 

    @Secured('ROLE_USER') 
    def companyInfo() { 
     def renderParams = [view: 'companyInfo', model: [:]] 
     if (request.method != 'POST') { 
      renderParams.model.cmpId = params?.id 
      render(renderParams) 
     } 
    } 
} 
+0

你是怎麼稱呼這個動作的?哪種HTTP方法?使用動作名稱作爲「開始」或除getStarted之外的其他內容。我會勸阻使用'get ***'作爲操作名稱。 – dmahapatro

+0

我改變了它,但沒有幫助我。 – emilan

+0

當'started'動作調用POST時'companyInfo'被調用一次。我沒有看到它被觸發兩次。在Dev Tool和Grails 2.2.4中測試過。你如何確認動作被觸發兩次? – dmahapatro

回答

0

See this answer。 Grails嘗試將get*映射到屬性。並且,當調用控制器時,grails會嘗試將getStarted映射到名爲started的屬性,然後調用該方法。所以,千萬不要使用get****作爲你的動作名稱