사용자 정보조회2 에서 처럼
1 2 3 4 | $("#list2").jqGrid('setGridParam', {url:"/library/userDetailedSearch.do?map="+params}) .trigger("reloadGrid"); | cs |
이런식으로 하려다가 400,415,406.. 이런에러들이 막 나드라...
시도1. 기존에 했었던 serializeObject으로 쭉 해보기
1 2 3 4 5 6 7 | var params = JSON.stringify($("#USER_detailedSearch").serializeObject()); console.log("params : "+params); $("#list2").jqGrid('setGridParam', {url:"/library/userDetailedSearch.do?map="+params}) .trigger("reloadGrid"); | cs |
500 에러발생 + 이상한 문자열이 끼여있음
http://localhost:8088/library/userDetailedSearch.do?map={%22DCODE%22:%221%2…%81%ED%9A%8C%EC%9B%90%22,%22POSITION%22:%2211%22,%22DEPARTMENT%22:%221%22}
500 (Internal Server Error)
일단 %22때문에 그런줄 알고 .replace(/#/gi, “”) 이용해서 제거하려고 시도
1 2 3 | $("#list2").jqGrid('setGridParam', {url:"/library/userDetailedSearch.do?map="+params.replace(/%22/gi, ""}) .trigger("reloadGrid"); | cs |
※.replace(/#/gi, "") 문자열 바꾸기
원래 .replace("A" “B”) A라는 첫번째 문자를 B로 바꿔라 라고 단 한번만 이루어 지는거였음 그런데
[정규식 이용해서 gi 로 감싸기]
str.replace(/#/gi, “”); -> #를 감싼 따옴표를 슬래시로 대체하고 뒤에 gi 를 붙이면 replaceAll 과 같은 결과를 볼 수 있다.
[정규식의 gi 설명]
* g : 발생할 모든 pattern에 대한 전역 검색
* i : 대/소문자 구분 안함
* m: 여러 줄 검색 (참고)
그래서
.replace(/바꾸고싶은 문자/gi, "바꿀문자") 이렇게 쓴다
참조
http://www.codejs.co.kr/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C-replace%EB%A5%BC-replaceall-%EC%B2%98%EB%9F%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/
※
헣헣.. 그래서 이리저리 해보다가 포기하도
시도2. serialize으로 시도
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // 사용자 상세검색 function detailedSearch(){ var params = $("#USER_detailedSearch").serialize(); //console.log("JSON.stringify : "+JSON.stringify(params)); console.log("params : "+params); $("#list2").jqGrid('setGridParam', {url:"/library/userDetailedSearch.do?map="+params}) .trigger("reloadGrid"); } | cs |
에러발생...
POST http://localhost:8088/library/userDetailedSearch.do?map=DCODE=11&NAME=1&ENAME=1&PRESENT=%EC%A0%95%EC%83%81%ED%9A%8C%EC%9B%90&POSITION=1&DEPARTMENT=1
500 (Internal Server Error)
하아.. 타입문제인가해서 CONTROLLER에 produces = "application/json; charset=UTF-8" 이거두 바꿔주고
받는게 잘못되었나해서 @RequestBody MAP...도 여러번 바꿔줘봤지만 싱패.
그래서 결국 뒤로미뤘던 하나하나 다 받는 방법을 선택... ㅠㅜ 마음에안들어ㅜㅜ
시도3. 폼값을 하나하나 받아 파라미터로 전달...ㅜㅜ 맘에안듬..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | -eco_userSearch.js // 사용자 상세검색 function detailedSearch() { alert("detailedSearch()"); var DCODE = $("#Search_DCODE").val(); var NAME = $("#Search_NAME").val(); var ENAME = $("#Search_ENAME").val(); var PRESENT = $("#Search_PRESENT").val(); var POSITION = $("#Search_POSITION").val(); var DEPARTMENT = $("#Search_DEPARTMENT").val(); alert(NAME); $("#list2").jqGrid( 'setGridParam', { url : "/library/userDetailedSearch.do?DCODE=" + DCODE + "&NAME=" + NAME + "&ENAME=" + ENAME + "&PRESENT=" + PRESENT + "&POSITION=" + POSITION + "&DEPARTMENT=" + DEPARTMENT }).trigger("reloadGrid"); $("#USER_detailedSearch").each(function() { this.reset(); // 그리드 리로드 후 폼값 리셋 }); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | - CONTROLLER // 사용자 상세검색 @RequestMapping(value = "/userDetailedSearch.do", method = RequestMethod.POST, produces = "application/json; charset=UTF-8") public @ResponseBody List<Emp_SearchVo> userDetailedSearch(HttpServletRequest req,Emp_SearchVo vo, @RequestBody String DCODE, @RequestBody String NAME, @RequestBody String ENAME, @RequestBody String PRESENT, @RequestBody String POSITION, @RequestBody String DEPARTMENT) { System.out.println("DDD"); List<Emp_SearchVo> emp = null; vo.setDCODE(req.getParameter("DCODE")); vo.setNAME(req.getParameter("NAME")); vo.setENAME(req.getParameter("ENAME")); vo.setPRESENT(req.getParameter("PRESENT")); vo.setPOSITION(req.getParameter("POSITION")); vo.setDEPARTMENT(req.getParameter("DEPARTMENT")); System.out.println(vo); emp = employeeServiceimp.userDetailedSearch(vo); //mybatis map parameter example 이걸로 검색 ㄱ //http://cocomo.tistory.com/245 참고 return emp; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 | -EmpSearch-mapper.xml <select id="userDetailedSearch" resultMap="EmpSearchMapper" parameterType="com.eco.library.dto.Emp_SearchVo"> SELECT * FROM EMPLOYEE WHERE DCODE like '%'||#{DCODE}||'%' or NAME like '%'||#{NAME}||'%' or ENAME like '%'||#{ENAME}||'%' or PRESENT like '%'||#{PRESENT}||'%' or POSITION like '%'||#{POSITION}||'%' or DEPARTMENT like '%'||#{DEPARTMENT}||'%' </select> | cs |
※ 일단은 쿼리를 이리 짜놨는데 상세검색에서 검색한 조건과 값이 완전 같아야하는지 ,.. 하나라도 같으면 출려해야하는지 모르것다.
==> 보통은 상세검색은 and로 한다고 한다. 11/24※
'개발 > 개인' 카테고리의 다른 글
사용자 정보수정 - 삭제버튼 추가 (0) | 2016.11.11 |
---|---|
사용자 정보입력 -사원번호,아이디 중복검사 (0) | 2016.11.10 |
사내도서대여시스템 - 사용자정보 조회2 // 정규식 (0) | 2016.11.08 |
사용자 정보조회 - all뿌리기 (페이징위해 수정) (0) | 2016.11.03 |
사용자 수정,상세보기 - 그리드 체크박스 해제 (0) | 2016.11.02 |
댓글