1) View단에서의 동적검색을 위한 Parameter Name 처리


#res("all") #res("mosf.ipmng_ip")

*동일한 name(searchCondition, searchValue)으로 여러 검색조건과 검색값을 넘긴다.



2) Model에서는 searchCondition, searchValue를 배열로 받아 처리.




private String[] searchCondition;
private String[] searchValue;

*그후 두개의 배열로는 하나의 iterate 안에서 사용할수없으니 List<HashMap>형태로 합친다.



public void getSearchCondition(MosfManageForm mosfForm,
			HttpServletRequest request) {
	String[] searchCondition = mosfForm.getSearchCondition();
	String[] searchValue = mosfForm.getSearchValue();
	/*
	 * POST방식의 경우, 파라미터 문자열이 ""형태로 저장되어 넘어옴.
	 * 따라서, searchValue를 기준으로 ""일 경우 List에 포함시키지 않도록 
	 */
	if(searchValue!=null){
		List searchList = new ArrayList();
		for(int i=0;i<=searchValue.length-1;i++){
			Map searchMap = new HashMap();
			if(!"".equals(searchValue[i]) && searchValue!=null){
				searchMap.put("searchCondition", searchCondition[i]);
				searchMap.put("searchValue", searchValue[i]);
				searchList.add(searchMap);
			}
		}
		mosfForm.setSearchList(searchList);
	}
}


3) ibatis iterate처리를 통해 사용, List내부의 HashMap접근은 "ListName[].HashMapKey"형태

	
 	WHERE 
 	
 		
 		(IPADDRESS like '%'||#searchList[].searchValue#||'%')
 		
 		
		
 		(IPADDRESS = #searchList[].searchValue#)
 		
 		
		
 		(TARGETNAMEKO = #searchList[].searchValue#)
 		
 		
		
 		(TARGETNAMEEN = #searchList[].searchValue#)
 		
 		
		
 		(ETC = #searchList[].searchValue#)
 		
 	
	

결론) iterate를 List<HashMap>형태가 됨으로 인해 iterate의 활용성은 더더욱 커질것같다~~

다른 카테고리의 글 목록

Workspace/Web Dev 카테고리의 포스트를 톺아봅니다