2013-05-13 70 views
0

我正在嘗試這個簡單的ExtJS - Grails/Groovy測試。我的Groovy服務器頁面(gsp)文件包含下面的ExtJS代碼:Grails/Groovy Controller應該返回成功ExtJS

  • 它有兩個字段的州代碼和州名。
  • 用戶輸入詳細信息並點擊提交。
  • 提交會觸發將表單進一步發佈到Controller類的處理程序。

function createTender() { 
     var submitHandler = function() { 
     alert("Submit Pressed !"); 
     var formPanel = Ext.getCmp('stateForm'); 
     formPanel.getForm().submit({ 
     url  : 'state/saveState', 
     method : 'POST', 
     success : function() { 
     alert('State saved successfully!'); 
     }, 
     failure : function() { 
     alert('State save failed!'); 
     } 
    }); 
} 

Ext.create('Ext.form.Panel',{ 
    id: 'stateForm', 
    height: 300, 
    width: 400, 
    bodyPadding: 10, 
    title: 'Create State', 
    items: [{ 
     xtype:'textfield', 
     fieldLabel: 'State Code', 
     name: 'stateCode', 
     allowBlank:false 
    }, { 
     xtype:'textfield', 
     fieldLabel: 'State Name', 
     name: 'stateName' 
    }],  

    buttons: [{ 
     text: 'Save', 
     handler: submitHandler 
    },{ 
     text: 'Cancel' 
    }], 
    renderTo: Ext.getBody() 
    }); 
    } 

下面是StateController類與動作/方法saveState和。 它只是打印狀態碼,什麼也不做。

class StateController { 
    static scaffold = true 
    def saveState = { 
    println "Into saveTender() method !!!" 
    println params.stateCode 
    // Steps to save the state code and name into Database. 
    } 
} 

問題:

  • saveState和方法正在打印兩者println語句。但是,就像你所看到的,我沒有返回任何東西,因爲我不知道我應該返回到gsp。我的目的是爲了保存州的詳細信息,併發出警告,說'國家成功救了!'信息。
  • 但是,gsp中的Ext代碼正在拋出「狀態保存失敗!」信息。

我想從Controller返回成功到gsp。我該怎麼做?請不要介意這個問題太天真了,因爲我是初學者。

回答

2
 render(contentType: "text/json") { 
       array = { 
        result "success": 'true', 
          "message": 'State Saved' 
       } 
     } 
0

它會失敗,因爲您的關閉saveState默認情況下會嘗試呈現GSP,因爲您沒有呈現或返回任何內容。如果您使用的是Grails 2.x,則聲明動作的首選方法是方法,所以我使用的是方法而不是Closure。

def saveState() { 
    State state = new State(stateCode: params.stateCode, stateName: params.stateName) 
    if(state.save()) { 
    render text: "State saved." 
    } else { 
    render text: "State fails: $state.errors" 
    } 
} 
+0

謝謝你塞爾吉奧。非常抱歉沒有回到這個問題上。所以,我試着渲染文本。但是它在哪裏呈現文本?假設我在我的問題中粘貼的Ext代碼是在createState.gsp中,'State Saved'是否會呈現在createState.gsp上(覆蓋當前內容)?或者它會尋找一個名爲saveState.gsp的gsp?而...成功警報呢? – rajugaadu 2013-05-15 23:27:31

+0

當我嘗試了您提供的代碼示例時,我沒有看到失敗警報。但是我也沒有看到成功警戒!對不起,如果我的問題太幼稚了:( – rajugaadu 2013-05-15 23:28:13

+0

只有當你使用它時,Ext纔會對消息「State Saved」做一些事情,比如像jQuery ajax,render文本可以避免使用gsp, t不得不創建一個saveState視圖 – 2013-05-15 23:36:09

0

你沒有從「saveState」返回任何東西。嘗試返回一個JSON,如

{ 
    success: 'true', 
    message: 'State Saved' 
} 

您可以查找Grails內置的JSON轉換器來返回更復雜的東西。