스프링

 

http://macaronics.net/index.php/m01/spring/view/1652

 

스프링 4 이상

 

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.8.0</version>
</dependency>

 

라이브리   등록

@ResponseBody 

public Map<String, Object> managementAjaxListSearch ( ){

  Map<String, Object> resultMap = new HashMap<String, Object>();

   resultMap.put("materialList", materialList);

   return resultMap;

}

 

끝이다.  

 

 

 

예 ) 프로젝트 상 다음 소스

컨트롤

	@RequestMapping(value="listAjaxSearch.do")
    @ResponseBody
    public Map<String, Object> managementAjaxListSearch(MaterialVO materialVO, PageMakerAndSearch  pageMaker , Map<String, Object> map,
            HttpServletRequest request,
            Model model) throws Exception{    
        
        map.put("mcode", materialVO.getMcode());
        map.put("materialName", materialVO.getMaterialName());
        pageMaker.setPerPageNum(2);
        
        Integer totalCount=managementService.selectMaterialSearchTotalCount(map);
        pageMaker.setTotalCount(totalCount);                
        map.put("pageStart", pageMaker.getPageStart());
        map.put("perPageNum", pageMaker.getPerPageNum());
        
        List<MaterialVO> materialList=managementService.selectMaterialSearchList(map);
        String pagination=pageMaker.bootStrapPagingHTML(request.getContextPath()+"/erp/management/listAjaxSearch.do");
        

        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("page", pageMaker.getPage());
        resultMap.put("totalCount", totalCount);
        resultMap.put("materialList", materialList);
        resultMap.put("pagination", pagination);
        return resultMap; 
    }
    
    

 

handlebars.js

간단하게  통한 파싱 처리 한다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.js"></script>

 

헨들러바 사용법 다음 주소 참조

https://sunijjang.tistory.com/27

 

template() 함수는 배열 데이터가 들어가야 하는데

서버단에서 넘어온 json  데이터가  배열이라서

template(result.materialList) 처리만으로 템플릿에 파라미터가 들어간다.

 

	<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.js"></script>



<script id="template" type="text/x-handlebars-template">
{{#each .}} 	
	<tr>
			<td class="text-center">{{no}}</td>
			<td class="text-center">{{mcode}}</td>
			<td  class="text-center">{{materialName}}</td>
			<td  class="text-center">{{properInventory}}</td>
			<td  class="text-center"><button>수정</button><button>삭제</button></td>
	   </tr>
{{/each}}	
</script>



<script>
$(function(){
	listManagementMaterialAjaxSearch();	
});
function listManagementMaterialAjaxSearch(page){

	var mcode=$("#mcode").val();
	var materialName=$("#materialName").val();	
	$.ajax({		
		url:"listAjaxSearch.do",
		type:"post",
		data:{
			'mcode':mcode,
			'materialName':materialName,
			'page':page
		},
		dataType:"json",		
		success:function(result){
			console.dir(result);
			$("#selectMaterialSearchTotalCount").text(result.totalCount);			
			
			//핸들바 템플릿 가져오기
			var source = $("#template").html();
			var template = Handlebars.compile(source);
			//배열 형식 이라 자동으로 매칭							 
			$("#management_search_tbody").html(template(result.materialList));	
			
			//console.log(result.materialList.length);
			//더보기
			$("#management_search_pagining").html(result.pagination);
		},
		error:function(result){
			console.log(result);
		}		
	});
}

</script>

 

위 내용이 끝이다.

 

DB  SQL 내용은 (SELECT @ROWNUM := 0) R  번호 처리 

 

	<select id="selectMaterialSearchList" resultMap="managerMaterialMAP" >
		<![CDATA[
		SELECT A.*
		
		 FROM 
		  	(
		    SELECT  mcode , material_name , proper_inventory , @ROWNUM := @ROWNUM + 1 AS no
		    
		    FROM tbl_material 

		   ,(SELECT @ROWNUM := 0) R      
		     
		      WHERE mcode IS NOT NULL 
		]]>	      
		  <include refid="listSql" />
		
		<![CDATA[    
		     ORDER BY mcode DESC
		 ) A  

		 ORDER BY no desc LIMIT #{pageStart}, #{perPageNum}
		]]>	
	</select>

 

 

 

 

 

데이터를 json 으로 받으려면 

@RequestBody MaterialVO materialVO

설정 후 pageMaker.setPage(materialVO.getPage() );

를 하면 된다.

@Data
public class MaterialVO {

	private Integer no;//번호
        private Integer page;
	private String mcode; //자재코드
	private String materialName; //자재명
	private Integer properInventory; //적정재고량
	private List<MaterialVO> list;
}

 

화면 단에서는

function listManagementMaterialAjaxSearch(page){
	page=5;
	
	var mcode=$("#mcode").val();
	var materialName=$("#materialName").val();	
	var data={};
	data["mcode"]=mcode;
	data["materialName"]=materialName;
	data["page"]=page;
	$.ajax({		
		url:"listAjaxSearch.do",
		type:"post",
		contentType:"application/json",
		data:JSON.stringify(data),
		dataType:"json",		
		success:function(result){
			
			$("#selectMaterialSearchTotalCount").text(result.totalCount);			
			
			//핸들바 템플릿 가져오기
			var source = $("#template").html();
			var template = Handlebars.compile(source);
			//배열 형식 이라 자동으로 매칭							 
			$("#management_search_tbody").html(template(result.materialList));	
			
			console.log(result.materialList.length);
			//더보기
			$("#management_search_pagining").html(result.pagination);
		},
		error:function(result){
			console.log(result);
		}		
	});
}

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

남자의 에로티시즘은 성가신 것을 거부하려 한다. -프란체스코 알베로니

댓글 ( 6)

댓글 남기기

작성

스프링 목록    more