2016-07-13 14 views
0

저는 ExtJS를 처음 사용합니다. ExtJS를 사용하여 로그인 페이지를 설계했습니다. 여기서 값은 서블릿 응답에서 JS 파일로 리턴됩니다. 같이전체 extjs 응용 프로그램에서 전역 적으로 액세스 할 수있는 extjs의 변수에 값을 할당하는 방법

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 여기 Ext.MessageBox.alert('User_Role', user_role.user_role);에서

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) { 
         } 
        }); 
       } 
      } 

, 내가 경고 메시지를 받고 있습니다.

enter image description here

내 필요가 내 전체의 ExtJS 응용 프로그램에 액세스 할 수 있도록 전역 변수에 값을 할당하는 것입니다 (나는 모든 JSP 파일에 포함되어 공통의 js 파일 이름 header.js이 응용 프로그램, header.js에 'user_role'의 값을 표시하여 모든 JSP 파일에 표시되도록하려는 경우).

참고 : 'user_role'변수를 개별 변수 globalVar.js (아래 코드)의 전역 변수로 정의하고 모든 JSP 파일에서 첫 번째 js 파일로 globalVar.js를 포함 시켰습니다.

var user_role; 

저는 ExtJS 4.2를 사용하고 있습니다. 이를 달성 할 수있는 방법을 제안하십시오.

+0

LocalStorage (http://docs.sencha.com/extjs/4.2.5/#!/api/Ext.util.LocalStorage ") 또는 쿠키 (http : //docs.sencha)를 사용하여 user_role을 저장할 수 있습니다. com/extjs/4.2.5/#!/api/Ext.util.Cookies) 그런 다음 해당 값을 저장/검색하는 정적 클래스로 해당 기능을 래핑하십시오 (http://extjsexamples.blogspot.com/2014/ 01/extjs-4-classes-statics-examples.html) –

답변

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) { 
         } 
        }); 
       } 
      } 

양식 제출이 성공하면 전역 변수를 지정하고 응용 프로그램의 전역 변수를 사용할 수 있습니다. [using MyApp.utilities.GlobalVar.user_role]

0

storeId가있는 저장소를 사용하면 전체 사용자 데이터를 한 곳에서 유지하는 것이 좋을 것입니다.

일단 서버에서 응답을 받으면. 그 값으로 스토어를 업데이트하십시오.

전체 응용 프로그램에서 해당 저장소에 액세스 할 수 있습니다.

그냥 Ext. getStore ('storeId') 여기서 store는 상점의 ID입니다.

사용자 데이터를 유지합니다.