Grails/Groovy控制器应该将成功返回给ExtJS

Grails/Groovy控制器应该将成功返回给ExtJS,grails,extjs,Grails,Extjs,我正在尝试这个简单的ExtJS-Grails/Groovy测试。我的Groovy服务器页面(gsp)文件包含以下ExtJS代码: 它有两个字段“状态代码”和“状态名称” 用户输入详细信息并单击提交 Submit触发处理程序,该处理程序将表单进一步发布到控制器类 下面是带有操作/方法saveState的StateController类。 它只打印州代码,什么也不做 class StateController { static scaffold = true def saveState

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

  • 它有两个字段“状态代码”和“状态名称”
  • 用户输入详细信息并单击提交
  • Submit触发处理程序,该处理程序将表单进一步发布到控制器类

下面是带有操作/方法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中的Ext代码抛出了“State save Failed!”消息

我想把控制员的成功还给gsp。我该怎么做?请不要介意这个问题是否太幼稚,因为我是初学者。

它失败了,因为您的闭包
saveState
将在默认情况下尝试呈现GSP,因为您不呈现或返回任何内容。如果您使用的是Grails2.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"
  } 
}

您没有从“保存状态”返回任何内容。尝试返回类似JSON的

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

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

谢谢Sergio。非常抱歉,没有再谈这个了。所以,我试着渲染文本。但是它在哪里呈现文本呢?假设我在问题中粘贴的Ext代码位于createState.gsp中,“状态已保存”是否会呈现在createState.gsp上(覆盖当前内容)?或者它会寻找一个名为saveState.gsp的gsp?而且。。。成功警报呢?当我尝试您提供的代码示例时,我没有看到失败警报。但我也没有看到成功警报!如果我的问题太天真,请再次道歉:(Ext将对消息“State Saved”执行某些操作)仅当您使用它时。例如,像JQuery ajax。渲染文本将避免使用gsp,因此您不必创建保存状态视图。如果您没有看到任何警报,请查看javascript是否失败。您可以在浏览器的错误控制台中查看。
        render(contentType: "text/json") {
               array = {
                   result "success": 'true',
                          "message": 'State Saved'
               }
        }
        render(contentType: "text/json") {
               array = {
                   result "success": 'true',
                          "message": 'State Saved'
               }
        }