본문 바로가기
개발공부/개발하다_발견함

전자정부 프레임워크 페이징 처리와의 결투

by 맙소사 2022. 4. 11.

예전에 한번 끔찍해했던 기록이 있기에 다시 되새겨보며...

https://better-9.tistory.com/109?category=859180 

 

전자정부 프레임워크 페이징 처리

페이징처리 하기 싫어서  어려워서 미루고 있다가 더 이상 미룰 수 없어서 드디어 했는데 왜 되는지 모르겠음. 1 2 3     Colored by Color Scripter cs 전자정부프레임워크에서는 위 코드를 넣고 어쩌

better-9.tistory.com

 

작년에 프로젝트 진행하다가 페이징 처리를 위해 다른 화면에서 뜯어온 코드 갖다 집어넣고 성공한 후로 이해는 뒤로 미루고 있었는데 이번에 새 프로젝트를 진행하며 더 이상 미룰 수 없어졌기 때문에 아예 각잡고 죄다 뜯어봤다.

 

1
2
3
4
5
6
<!-- 페이징처리 -->
<div class="boardbtn pos_top">
    <div class="pagination page">
        <ui:pagination paginationInfo="${paginationInfo}" type="ez" jsFunction="fn_link_page" />
    </div>
</div>
cs

이번에는 저렇게 생겼다. div가 여러개인 이유는 ... 디자인을 내가 하지 않았기 때문에 생략한다.

 

ui라는 태그를 사용해서 전자정부프레임워크에서 뜯어올 라이브러리를 선언해주는 형식이라고 한다.

해당 페이징 처리에 대한 정보가 상세하게 담긴 가이드 링크 ( https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:view:paginationtag )를 구글링해서 찾았지만, 가이드 링크에 있는것을 처음부터 다시 구현할 시간도 없거니와 기존에 존재하는 시스템이 있으면 은근슬쩍 가져다 쓰는게 좀 더 간편하지 않을까? 싶어서 위의 코드를 더 자세히 뜯어봤다.

 

살펴보니 type이라는 친구가 있길래 보는데 다른 페이징 처리 페이지들마다 type 모양이 살짝씩 다른것을 발견했다. 이 친구는 위의 가이드링크 중 DefaultPaginationRenderer 부분에서 확인할 수 있다.

 

내가 진행한 방식은

 

1) dispatcher-servlet.xml에 페이지 렌더러 관련 빈을 집어넣어준다.

1
2
3
4
5
6
7
8
9
10
<!--페이징 렌더러 설정 -->
<bean id="imageRendererEz" class="(클래스경로).pagination.ezPaginationRenderer"/>
 
<bean id="paginationManager" class="egovframework.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
    <property name="rendererType">
        <map>
            <entry key="ez" value-ref="ezPaginationRenderer"/> 
        </map>
    </property>
</bean>
cs

 

2) 새 클래스를 생성하고 extends AbstractPaginationRenderer를 해준 뒤 내용을 작성한다.

ui로 호출되는 페이징처리 부분을 아예 클래스에서부터 작성해준다고 생각하면 된다. 예전에 학원 선생님이 이 방식을 어떤 방식이라고 이름을 알려주시면서 구식이라고(...) 말씀하신 기억이 있는데 잘 기억이 안 난다. 나는 어느게 최신식인지 잘 모르니까 일단 기존 프로젝트 구성을 따라가고 있는데 확실히 이렇게 class단에서 html 텍스트를 고정해서 호출하는건 나중에 수정이 조금 불편하지 않을까? 하는 생각이 든다.

 

3) jsp 화면 하단에 ui 태그를 사용해서 pagination 정보를 호출한다. bean에서 지정해준 type 명을 맞춰서 작성하면 끝.

물론 저 onclick으로 넘어갈 함수도 script단에 적어주어야 제대로 동작한다. a태그는 파라미터를 넘겨줄거면 href가 아닌 onclick을 써야한다는것도 잊지 말기! 

 

끝 

댓글