CommonModule CodeUserGuide ext-js

From JCFWiKi

Jump to: navigation, search

그림:check.gif

  • 산출물 : JCF3.0 공통모듈- 코드모듈 사용가이드 -ext-js를 사용 할 경우
  • 작성자:김민아
  • 작성일 : 2008/09/17

Copyright © 2008 Daewoo Information Systems Co., Ltd.

  • combox박스가 두개 이상이여서 상위코드 클릭 시 해당되는 하위코드가 바인딩되어야하는 경우 ext-js를 사용하였다.
  • 예) 코드관리에서 상위코드 가져오기

[편집] code.js파일

  • findCodes()
Ext.onReady(function(){
     findCodes();
}
    • 화면이 로딩될 때 코드값을 가져오는 메소드(findCodes)를 onReady메소드 안에 넣는다.
 /*
     * 로딩시 combox 값 가져오기
   */
	function findCodes() {
		var params = '{' 
			+ 'parentId:\"' + "0" + '\",'
           	+ '}'
       		Ext.Ajax.request({
		   url: '/jcf-common/comCode/findComCodeList.action',
		 jsonData: params,
		    headers:{
		    	'Content-Type' : 'application/json'
		    },	 
		    success: function( r, o ) {
		    	try {
      	    		cbUpwCodeStore.loadData(Ext.decode(r.responseText));
      	    		cbwCodeStore.loadData(Ext.decode(r.responseText));	    	
		    	} catch(e) {
		    	}
	    	},
			failure: function( r, o ) {
				alert("find Error! "+r.responseText);
			}
		})
	}
    • parentId가 0인 코드값을 가져오기 위해서 위에 같이 params을 지정한다.(Action참고)
    • Ext.Ajax.request라는 메소드 사용하여 서버에 request를 보낼 url 과 위에서 정의한 params을 jsonData에 넣는다.
    • 서버로부터 값을 제대로 받아왔는지 확인하기 위해 success 와 failure을 지정해주고 success function 안에는 try /catch 문을 선언한다.
    • alert(r.responseText)을 통해 받아온 JSON 데이터값을 alert창으로 확인한다.
    • cbUpwCodeStore.loadData, cbwCodeStore.loadData 로 JsonStore 에 받아온 데이터를 담는다.
  • JsonStore
var Code = Ext.data.Record.create([
           	{name: 'id',      type: 'string'},
           	{name: 'name',    type: 'string'}      	
      ]);
  
    //상의 업무 시스템 Store 정의
    var cbUpwCodeStore = new Ext.data.JsonStore({
		root:'upwCodeList',
         fields: [ 'id', 'name']      		 
    });
    
        // 업무 시스템 Store 정의 
    var cbwCodeStore = new Ext.data.JsonStore({
		root:'workCodeList',
          fields: [ 'id', 'name']        		 
    });
    • cbUpwCodeStore과 cbwCodeStore 는 findCodes에서 받아온 데이터를 저장하기 위한 JsonStore 이다.
    • New Ext.data.JsonStore 로 cbwCodeStore 라는 JsonStore 를 생성한다. root에는 action의 OutChannel에서 지정한 값을 fields에는 받은 값의 각 Object들을 넣는다.
  • ComboBox 생성
     	// 상위업무시스템 combox
	cbUpwCode = new Ext.form.ComboBox({  
				store: cbUpwCodeStore,
				valueField: 'id',			
				displayField:'name',
				typeAhead: true,
			        mode: 'local',
				triggerAction: 'all',
				editable:false,
	                	emptyText:'시스템  코드를 선택하세요',
				selectOnFocus:true,
				listeners:{select:{fn:function(combo, value) {
					var comboNext = Ext.getCmp('cbUpwCode');   
                                        //클릭한 시스템코드에 따라 상위업무코드 필터링 		
	                	       cbwCodeStore.filter('parentId', this.getValue());
				}}},
				applyTo: 'upwCombo'
	});
	
       var cbworkCodeId;	
// 상위업무코드 combox
	cbworkCode = new Ext.form.ComboBox({
				store: cbwCodeStore,
				valueField: 'id',			
				displayField:'name',
				typeAhead: true,
				editable:false,
				mode: 'local',
				triggerAction: 'all',
				emptyText:'업무를 선택하세요',
				selectOnFocus:true,
		        	listeners:{select:{fn:function(combo, value) {
				    cbworkCodeId=this.getValue();
				}}},
				applyTo: 'workCombo'
	});
    • new Ext.form.ComboBox 로 cbUpwCode 와 cbworkCode 라는 ComboBox를 생성한다
    • Preperty 설명)
      • Store: 바인딩할 store 지정,
      • displayField : 화면에 보여지는 text 값
      • valueField: 실제 저장되는 value 값
      • Editable: combox 수정여부(ombox에서 선택하기 않고 직접입력이 가능하도록 설정하고 싶다면 true로 지정)
      • Mode: local data를 로당할지 server에서 data를 가져와 로딩할지 여부 (local은 local data를 로드한다는 뜻이고 remote는 server로부터 data를 로드한다는 뜻이다)
      • triggerAction: 이미 선택된 값 외의 코드값도 선택할 수 있게할지 여부( triggerAction을 all이라고 지정하지 않는다면 이미 값이 있거나, 한번 선택된 코드값은 수정할 수 없음)
      • emptyText : combox에 값이 바인딩이 되지 않았을 때 기본으로 보여지는 텍스트
      • selectOnFocus: combox를 클릭했을 때, combox에 바인딩된 데이터를 Focus 할지 여부이다. (True로 설정해놓았으면, combox를 클릭했을 때, combox에 바인딩된 데이터가 파란네모박스 안에 흰글씨로 Focus 됨)
      • listeners 클릭시 선택된 데이터를 읽어서 다른곳에서 참조할 때 사용
      • applyTo: 실제 바인딩 할 jsp파일의 id

[편집] CodeAction.java

public  String findComCodeList(){
		
	private CodeService codeService;
	private Code code;
	private List upwCodeList; 
	private List workCodeList;
	private List codeDivList;
	private List codeList;
	
		Map searchMap = (Map) InChannel.getVariables();	 
	       upwCodeList=codeService.findCodes(searchMap);
		workCodeList=new ArrayList();
		for (int i = 0; i < upwCodeList.size(); i++) {
			System.out.println(upwCodeList.size());
			code = (Code) upwCodeList.get(i);
			System.out.println((code.getId()));
	     	List tmpcodeList =codeService.findCodes(code.getId());
	    	if (null == tmpcodeList)
				continue;
	     	workCodeList.addAll(tmpcodeList);
		}
		OutChannel.setDataSet("upwCodeList", upwCodeList);
		OutChannel.setDataSet("workCodeList", workCodeList);
 
		OutChannel.send();
		
		return null;
    }
  • InChannel.getVariables을 통해 js파일에서 param으로 넘긴 값을 Map 유형의 searchMap에 받아온다. (parentId는 key, 0은 value로 받아옴)
  • OutChannel.setDataSet을 통해 js파일에 JsonData 유형으로 변환해서 보낸다.
    • 여기서 "upwCodeList"은 js파일에서 선언한 JsonStore의 root와 일치되어야하고 upwCodeList는 위에서 선언한 값이다.