0

我正在尝试这个简单的 ExtJS - Grails/Groovy 测试。我的 Groovy 服务器页面 ( 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 代码抛出“状态保存失败!” 信息。

我想将 Controller 的成功返回给 gsp。我该怎么做?请不要介意这个问题是否太天真,因为我是初学者。

4

3 回答 3

2
        render(contentType: "text/json") {
               array = {
                   result "success": 'true',
                          "message": 'State Saved'
               }
        }
于 2016-02-03T02:11:00.067 回答
0

它失败是因为你的闭包saveState默认会尝试渲染一个 GSP,因为你没有渲染或返回任何东西。如果您使用的是 Grails 2.x,则声明操作的首选方式是方法,因此我使用的是方法而不是闭包。

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"
  } 
}
于 2013-05-13T11:49:01.997 回答
0

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

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

您可以查找 grails 内置的 JSON 转换器以返回更复杂的内容。

于 2013-05-15T10:08:14.613 回答