Alexei Ptitchkin
3 Aug 2012, 6:06 AM
I have very strange Ext.form.Panel misbehavior. Form load() always return failure regardless that POST request sent and processed by servlet.
Servlet response for load is:
{"success":true,
"data":{
"userGrpId":2,
"userCode":"Q03451",
"userName":"E Gu",
"status":"Active",
"userGroup":{"groupName":"Admin",
"groupDesc":"Company Admin",
"updateOn":"09/19/2011 12:38:09",
"updateBy":"George Zhang",
"id":2,"idx":0},
"isAPApprover":true,
"isPrdApprover":true,
"isSalesRep":false,
"isSalesManager":false,
"isFctApprover":true,
"isPrdBypass":true,
"isAPBypass":false,
"isFctBypass":true,
"isPrdEmailExempt":false,
"isAPEmailExempt":false,
"isFctEmailExempt":true,
"createOn":"08/03/2012 09:21:32",
"createBy":"E Gu",
"updateOn":"01/31/2012 17:26:53",
"updateBy":"Scott W",
"id":71,"idx":0}}"
Model used in form and store:
Ext.define('Fast.model.company.UserDetailModel', {
extend: 'Ext.data.Model',
fields: [
{name: 'id'},
{name: 'userCode', type: 'string'},
{name: 'userName', type: 'string'},
{name: 'userCodeDis', mapping:"userCode"},
{name: 'userNameDis', mapping:"userName"},
{name: 'accessLevel', type: 'string', mapping:"userGroup.groupName"},
{name: 'status', type: 'string'},
{name: 'prodApprover', type: 'boolean',mapping:'isPrdApprover'},
{name: 'fcastApprover', type: 'boolean', mapping:'isFctApprover'},
{name: 'salesPerson', type: 'boolean', mapping:'isSalesRep'},
{name: 'accountApprover', type: 'boolean', mapping:'isAPApprover'},
{name: 'salesManager', type: 'boolean',mapping:'isSalesManager'},
{name: 'prdBypass', type: 'boolean', mapping:'isPrdBypass'},
{name: 'apBypass', type: 'boolean', mapping:"isAPBypass"},
{name: 'fctBypass', type: 'boolean',mapping:'isFctBypass'},
{name: 'prdEmailExempt', type: 'boolean', mapping:'isPrdEmailExempt'},
{name: 'apEmailExempt', type: 'boolean', mapping:'isAPEmailExempt'},
{name: 'fctEmailExempt', type: 'boolean',mapping:'isFctEmailExempt'},
{name: 'userGrpId'}
]
});
Form declaration code:
Ext.define('Fast.view.company.CompanyUserDetailForm' ,{
extend : 'Ext.form.Panel',
alias : 'widget.CompanyUserDetailForm',
// configure how to read the json data
reader : new Ext.data.JsonReader({
root : 'data',
model : 'UserDetailModel'
}),
items : [ ... ],
dockedItems: [{
xtype: 'toolbar',
dock: 'top',
layout: {pack: 'left'},
items: [{ minWidth: 80,
text: 'Save',
iconCls: 'icon-save',
id:"saveBtn",
action:'userDetailEditSave'
}]
}]
});
Form load code:
editUserDetail : function(button) {
var gridPanel = this.getCompanyUserSelectGrid();
var selectedRecord = gridPanel.getSelectionModel().getSelection()[0];
var url='json/companyUserDetailsAction?m=read';
selectUserId= selectedRecord.get('userCode');
selectUserName= selectedRecord.get('userName');
status= selectedRecord.get('status');
var userDetailForm = this.getCompanyUserDetailForm();
userDetailForm.getForm().load({ url: 'json/companyUserDetailsAction?m=read'
,params :{pram1:selectUserId, pram2:selectUserName,pram3:status}
,failure: function(form, action){
var failureType = action.failureType;
var response = action.response;
var result = action.result;
var type = action.type;
Ext.MessageBox.show({title: 'userDetailForm load fail',
msg: "failureType = "+ failureType+"\n response = "+response +"\nresult = "+result +"\ntype = "+type,
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.OK});
}
,success: function(form, action){
alert('userDetailForm load succeed');
var cardPanel = gridPanel.up('panel');
var cardLayout = cardPanel.getLayout();
cardLayout.setActiveItem(1);
}
//,waitMsg: 'Loading User Details...'
});
}
Values in action par-r sent to failure:
failureType = load
response = full server response (see above)
result = Object {success:false, data:null}
type = load
Could you please explain what I'm doing wrong.
Thank you.
Servlet response for load is:
{"success":true,
"data":{
"userGrpId":2,
"userCode":"Q03451",
"userName":"E Gu",
"status":"Active",
"userGroup":{"groupName":"Admin",
"groupDesc":"Company Admin",
"updateOn":"09/19/2011 12:38:09",
"updateBy":"George Zhang",
"id":2,"idx":0},
"isAPApprover":true,
"isPrdApprover":true,
"isSalesRep":false,
"isSalesManager":false,
"isFctApprover":true,
"isPrdBypass":true,
"isAPBypass":false,
"isFctBypass":true,
"isPrdEmailExempt":false,
"isAPEmailExempt":false,
"isFctEmailExempt":true,
"createOn":"08/03/2012 09:21:32",
"createBy":"E Gu",
"updateOn":"01/31/2012 17:26:53",
"updateBy":"Scott W",
"id":71,"idx":0}}"
Model used in form and store:
Ext.define('Fast.model.company.UserDetailModel', {
extend: 'Ext.data.Model',
fields: [
{name: 'id'},
{name: 'userCode', type: 'string'},
{name: 'userName', type: 'string'},
{name: 'userCodeDis', mapping:"userCode"},
{name: 'userNameDis', mapping:"userName"},
{name: 'accessLevel', type: 'string', mapping:"userGroup.groupName"},
{name: 'status', type: 'string'},
{name: 'prodApprover', type: 'boolean',mapping:'isPrdApprover'},
{name: 'fcastApprover', type: 'boolean', mapping:'isFctApprover'},
{name: 'salesPerson', type: 'boolean', mapping:'isSalesRep'},
{name: 'accountApprover', type: 'boolean', mapping:'isAPApprover'},
{name: 'salesManager', type: 'boolean',mapping:'isSalesManager'},
{name: 'prdBypass', type: 'boolean', mapping:'isPrdBypass'},
{name: 'apBypass', type: 'boolean', mapping:"isAPBypass"},
{name: 'fctBypass', type: 'boolean',mapping:'isFctBypass'},
{name: 'prdEmailExempt', type: 'boolean', mapping:'isPrdEmailExempt'},
{name: 'apEmailExempt', type: 'boolean', mapping:'isAPEmailExempt'},
{name: 'fctEmailExempt', type: 'boolean',mapping:'isFctEmailExempt'},
{name: 'userGrpId'}
]
});
Form declaration code:
Ext.define('Fast.view.company.CompanyUserDetailForm' ,{
extend : 'Ext.form.Panel',
alias : 'widget.CompanyUserDetailForm',
// configure how to read the json data
reader : new Ext.data.JsonReader({
root : 'data',
model : 'UserDetailModel'
}),
items : [ ... ],
dockedItems: [{
xtype: 'toolbar',
dock: 'top',
layout: {pack: 'left'},
items: [{ minWidth: 80,
text: 'Save',
iconCls: 'icon-save',
id:"saveBtn",
action:'userDetailEditSave'
}]
}]
});
Form load code:
editUserDetail : function(button) {
var gridPanel = this.getCompanyUserSelectGrid();
var selectedRecord = gridPanel.getSelectionModel().getSelection()[0];
var url='json/companyUserDetailsAction?m=read';
selectUserId= selectedRecord.get('userCode');
selectUserName= selectedRecord.get('userName');
status= selectedRecord.get('status');
var userDetailForm = this.getCompanyUserDetailForm();
userDetailForm.getForm().load({ url: 'json/companyUserDetailsAction?m=read'
,params :{pram1:selectUserId, pram2:selectUserName,pram3:status}
,failure: function(form, action){
var failureType = action.failureType;
var response = action.response;
var result = action.result;
var type = action.type;
Ext.MessageBox.show({title: 'userDetailForm load fail',
msg: "failureType = "+ failureType+"\n response = "+response +"\nresult = "+result +"\ntype = "+type,
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.OK});
}
,success: function(form, action){
alert('userDetailForm load succeed');
var cardPanel = gridPanel.up('panel');
var cardLayout = cardPanel.getLayout();
cardLayout.setActiveItem(1);
}
//,waitMsg: 'Loading User Details...'
});
}
Values in action par-r sent to failure:
failureType = load
response = full server response (see above)
result = Object {success:false, data:null}
type = load
Could you please explain what I'm doing wrong.
Thank you.