我是ExtJS的新手。我使用ExtJS设计了一个登录页面,其中一个值从servlet响应成功返回到JS文件,如下所示。
LoginServlet.java
String user_role = "User1 - Admin";
myObj.addProperty("success", true);
myObj.addProperty("user_role", user_role);
out.println(myObj.toString());
out.close();
login.js
buttons: [{
text: 'Login',
handler: function(button)
{
var formData = this.up('form').getForm();
formData.submit({
clientValidation: true,
url: '/LoginServlet',
method: 'POST',
success: function(form, action) {
user_role = Ext.JSON.decode(action.response.responseText);
Ext.MessageBox.alert('User_Role', user_role.user_role);
window.location = 'userhome.jsp';
},
failure: function(form, action) {
}
});
}
}
在Ext.MessageBox.alert('User_Role', user_role.user_role);
中,我收到了一条警告信息,如图所示。
我需要将值赋给全局变量,以便我可以在我的整个ExtJS应用程序中访问它(我有一个名为header.js的常见js文件,它包含在应用程序的所有JSP文件中,我想要在header.js中显示'user_role'的值,以便它将显示在所有JSP文件中)。
注意:我已将'user_role'变量定义为单独文件globalVar.js(下面的代码)中的全局变量,并且我已将globalVar.js作为所有JSP文件中的第一个js文件包含在内。)
var user_role;
我正在使用ExtJS 4.2。请建议一种方法来实现这一目标。
答案 0 :(得分:0)
在实用程序中为您的应用程序添加单例类。
Ext.define('MyApp.utilities.GlobalVar', {
singleton : true,
user_role : null
}
buttons: [{
text: 'Login',
handler: function(button)
{
var formData = this.up('form').getForm();
formData.submit({
clientValidation: true,
url: '/LoginServlet',
method: 'POST',
success: function(form, action) {
user_role = Ext.JSON.decode(action.response.responseText);
Ext.MessageBox.alert('User_Role', user_role.user_role);
**MyApp.utilities.GlobalVar.user_role = user_role.user_role;**
window.location = 'userhome.jsp';
},
failure: function(form, action) {
}
});
}
}
在表单提交成功时分配全局变量,您可以在应用程序的任何位置使用全局变量。 [使用MyApp.utilities.GlobalVar.user_role]
答案 1 :(得分:0)
如果您使用带有storeId的商店将整个用户数据保存在一个位置,那将是一件好事。
从服务器获得回复后。使用该值更新您的商店。
该商店可以从整个应用程序中加入。
做Ext。 getStore('storeId')其中store if是商店的id
它还会保留您的用户数据组织。