해결된 질문
작성
·
405
답변 1
0
안녕하세요. 킷도우입니다.
강의 잘 들어주셨다니 감사합니다. :)
일단 저의 경우 사내 업무용 넥사크로 시스템 운영 경험이 2차례 정도 있는데
첫 번째 시스템의 경우 최초 구축하면서 페이징 처리를 했으나 조회 속도 이슈로 인해 운영하면서 전부 페이징 처리를 걷어냈던 경험이 있고 , 두 번째 시스템에서는 애초에 페이징 적용을 안 했습니다.
보통은 넥사크로를 사내 업무용으로 많이들 쓰고 테이블 데이터 양이 많다 보면 데이터 조회 시 불편한 점으로 인해 페이징 처리를 안 하지 않나 생각됩니다. 그래도 어떤 상황이 생길지 모르니 학습 차원에서 실습을 해 보는 것은 좋은 것 같습니다:)
아래 페이징 처리 관련 잘 정리된 내용이 있어 링크 공유드립니다.
아래 소스를 활용해 제가 직접 적용해 보니 변환만 잘 하면 정상 작동하는 소스입니다.
그리고 강의 내용을 완벽히 숙지하셨다면 아래 링크를 보고 충분히 하실 수 있는 개발이라고 생각합니다.
커스터마이징하는 방법에 몇 가지 팁을 드려보면 아래와 같습니다.
▶paging.xfdl -> OB_001.xfdl
① 조회 버튼
-> id : btnSearch
② 데이터 조회 Grid
-> id : grd_ordList
-> binddataset : ds_list
③ 페이징 처리용 화면 Div
-> id : Div00
-> url : cmm::paging_comm.xfdl
(Board 말고 cmm 폴더에 xfdl파일을 만들어주세요. 공통 모듈 성격이라 cmm에 넣는 것이 좋습니다.)
이 뒤 나오는 소스는 OB_001.xfdl에 적절히 배치 시켜주세요.
▶ paging_comm.xfdl
넥사크로 컴포넌트를 직접 그려주시고 ID를 부여해주세요.
강의에서 배웠던 내용을 토대로 그리면 충분히 하실 수 있습니다!
아래 소스는 전부 그대로 복사해서 적절히 배치 시켜주세요.
▶ page_sample.jsp
저희는 이 부분을 UiadapterBoardServiceImpl.java에 구현해야 합니다.
.jsp 소스를 .java로 변환해 주시면 됩니다.
예제 소스에는 for문으로 data를 임의로 만들지만 저희는 주문 테이블로부터 pageNumber와 페이지에 표시할 row 수를 토대로 값을 select 해야합니다.
이 부분은 mybatis 문법이 별도로 들어가야 하는데 아래 문법 참조하시면 도움 되실겁니다. :)
기존에 주문 조회 select문을 한번 감싸서 아래와 같이 적용하시면 됩니다.
SELECT *
FROM (기존에 주문 조회 쿼리 그대로 복붙) A
<choose>
<when test = "pageNum ==1 ">
WHERE <![CDATA[A.RNUM <= #{rowCount}]]>
</when>
<otherwise>
WHERE <![CDATA[A.RNUM > (#{pageNum}-1)*#{rowCount} AND A.RNUM <= #{pageNum}*#{rowCount}]]>
</otherwise>
</choose>
아래는 제가 적용한 결과 화면입니다. 한 페이지당 노출할 row 수를 5개로 설정해 보았습니다.
진행 하시다가 막히시면 댓글로 언제든 문의 주세요 ㅎㅎ
감사합니다:)
안녕하세요! 킷도우입니다:) 문의하신 사항 답변드립니다.
넥사크로에서 스프링 컨트롤러로 Request를 보낼 땐 넥사크로 내장 함수인 this.gfnTransaction 함수를 이용합니다. 이 함수의 매개변수를 보면 본 강의 기준 strAvg 라는 매개 변수가 있습니다.
해당 변수를 이용하시면 DataSet이 아닌 타입으로도 전송이 가능합니다.
넥사크로 소스와 컨트롤러 소스에 아래와 같이 적용해 보시면 되실겁니다.
넥사크로 소스
var strSvcId = "selectOrdList";
var strSvcUrl = "selectOrdList.do";
var inData = "ds_searchList=ds_searchList";
var outData = "ds_list=ds_list";
var today = "20231122";
var strAvg = "date="+today+""; // 또는 var strAvg = "data=20231123";
var callBackFnc = "fnCallback";
this.gfnTransaction(strSvcId ,
strSvcUrl ,
inData ,
outData ,
strAvg ,
callBackFnc);
컨트롤러 소스
@RequestMapping(value = "/selectOrdList.do")
public NexacroResult selectOrdList(@ParamDataSet(name = "ds_searchList") Map<String,Object> ds_searchList, @ParamVariable(name = "date") String date) throws NexacroException {
System.out.println("넥사에서 strAvg에 담은 값 : " + date);
...
도움 되셨길 바랍니다.
감사합니다:)
혹시 스프링 컨트롤러에서 DataSet 뿐만 아닌 넥사크로에서 던진 param 도 받으려면 어떻게 해야할까요?