Grails/Groovy Controller应该向ExtJS返回Success



我正在尝试这个简单的ExtJS - Grails/Groovy测试。我的Groovy Server Page (gsp)文件包含以下ExtJS代码:

  • 有两个字段:州代码和州名。
  • 用户输入详细信息,点击提交。
  • Submit触发处理程序,该处理程序进一步将表单发送给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()
    });
  }

下面是具有saveState操作/方法的StateController类。它只输出状态代码,不做任何事情。

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代码抛出了"State save Failed!"消息。

我想从控制器返回成功到gsp。我该怎么做呢?如果这个问题太幼稚,请不要介意,因为我是初学者。

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

它失败是因为您的闭包saveState将尝试在默认情况下呈现GSP,因为您不呈现或返回任何内容。如果您使用的是Grails 2。声明动作的首选方式是方法,所以我使用方法而不是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"
  } 
}

您没有从"saveState"返回任何内容。尝试返回一个JSON,如

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

您可以查找grails内置的JSON转换器来返回更复杂的东西

最新更新