我正在尝试这个简单的ExtJS - Grails / Groovy测试。我的Groovy Server Page(gsp)文件包含以下ExtJS代码:
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()
});
}
下面是带有action / method 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.
}
}
问题:
我想将Controller的成功归功于gsp。我该怎么做?请不要介意这个问题是否太天真,因为我是初学者。
答案 0 :(得分:2)
render(contentType: "text/json") {
array = {
result "success": 'true',
"message": 'State Saved'
}
}
答案 1 :(得分: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"
}
}
答案 2 :(得分:0)
您没有从“saveState”返回任何内容。尝试返回类似的JSON,
{
success: 'true',
message: 'State Saved'
}
您可以在内置的JSON转换器中查找grails以返回更复杂的内容。